Jsf t:selectOneRadio与a4j:ajax不呈现javascript
我正在创建一个动态表单,每行前面都有单选按钮,当选择不同的行时,这些单选按钮需要更新购物车:Jsf t:selectOneRadio与a4j:ajax不呈现javascript,jsf,jsf-2,richfaces,ajax4jsf,tomahawk,Jsf,Jsf 2,Richfaces,Ajax4jsf,Tomahawk,我正在创建一个动态表单,每行前面都有单选按钮,当选择不同的行时,这些单选按钮需要更新购物车: <t:inputText id="test"> <f:ajax event="click" onevent="alert('3');" /> </t:inputText> <t:selectOneRadio id="rbtnQuantity" value="#{orderActions.selectedQuantity}" layout="spread
<t:inputText id="test">
<f:ajax event="click" onevent="alert('3');" />
</t:inputText>
<t:selectOneRadio id="rbtnQuantity" value="#{orderActions.selectedQuantity}" layout="spread">
<f:selectItems value="#{orderActions.quantities}" var="item" />
<f:converter converterId="integerConverter" />
<a4j:ajax event="click" oncomplete="renderPrices();" />
</t:selectOneRadio>
<rich:dataTable id="tblQuantities" styleClass="quantities" value="#{orderActions.formatQuantityPrices}" var="item" rowKeyVar="row">
<h:column>
<t:radio id="rbtnQuantity" for=":form:rbtnQuantity" index="#{row}" />
</h:column>
<h:column>
<h:outputText value="#{item.quantity}" />
</h:column>
<h:column>
<h:outputText value="#{item.price}">
<f:convertNumber type="currency" currencySymbol="$" />
</h:outputText>
</h:column>
<h:column>
<h:outputText value="#{item.price / item.quantity}">
<f:convertNumber type="currency" currencySymbol="$" />
</h:outputText>/u
</h:column>
</rich:dataTable>
/u
问题在于,没有单选按钮触发ajax事件,即使结果代码中没有呈现javascript代码:
<table id="form:tblQuantities" class="rf-dt quantities">
<colgroup span="4">
</colgroup>
<tbody id="form:tblQuantities:tb" class="rf-dt-b">
<tr id="form:tblQuantities:0" class="rf-dt-r rf-dt-fst-r">
<td id="form:tblQuantities:0:j_idt296" class="rf-dt-c">
<label><input id="form:tblQuantities:0:rbtnQuantity" type="radio" name="form:rbtnQuantity" checked="checked" value="25" /> 25</label>
</td>
<td id="form:tblQuantities:0:j_idt297" class="rf-dt-c">25</td>
<td id="form:tblQuantities:0:j_idt309" class="rf-dt-c">118,75 $</td>
<td id="form:tblQuantities:0:j_idt310" class="rf-dt-c">4,75 $/u</td>
</tr>
[more similar rows...]
25
25
118,75 $
4,75美元/股
[更多类似行…]
我还在顶部添加了一个t:inputText,看看是不是t:selectOneRadio的用法造成了问题,但不是
我使用的是Mojarra、RichFaces 4.2.1、Tomahawk 1.1.14。由于我无法将a4j:ajax或f:ajax与t:selectOneRadio一起使用,我使用了以下解决方法:
<a4j:jsFunction name="changeQuantity" oncomplete="renderPrices();">
<a4j:param assignTo="#{orderActions.selectedQuantity}" name="quantity" />
</a4j:jsFunction>
<t:selectOneRadio onclick="quantity = jQuery(this).val();changeQuantity(quantity);" id="rbtnQuantity" value="#{orderActions.selectedQuantity}" layout="spread">
<f:selectItems value="#{orderActions.quantities}" var="item" />
<f:converter converterId="integerConverter" />
</t:selectOneRadio>
它工作正常,但如果有人找到了正确的解决方案,我更愿意解决这个问题
编辑:
以下是最终使用的代码:
<a4j:jsFunction name="changeQuantity" oncomplete="renderPrices();">
<a4j:param assignTo="#{orderActions.selectedQuantity}" name="quantity" />
</a4j:jsFunction>
# Each row of the table :
<input type="radio" name="quantity" value="#{item.quantity}" checked="#{orderActions.selectedQuantity eq item.quantity ? 'checked' : ''}" onclick="changeQuantity(#{item.quantity});" />
#表的每一行:
我不确定您是否可以使用我现在有这个问题!从那以后你还试过什么吗?我已经用我的最终代码更新了我的答案,从那以后使用。