2012-11-15 27 views
2

我創建與該需要更新一個車中的每個行的前面的單選按鈕動態形式AJAX NO:噸:selectOneRadio與A4J:當選擇了不同的行的javascript渲染

<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> 

問題是沒有單選按鈕觸發Ajax事件,甚至沒有JavaScript代碼在resuling代碼渲染:

<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" />&#160;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...] 

我還包括一名T:inputText的頂部時,看它是否是t:selectOneRadio的使用是問題,但沒有。

我正在使用Mojarra,RichFaces 4.2.1,Tomahawk 1.1.14。

+1

我不確定你可以使用' Daniel

+0

已經嘗試過,結果相同。 –

+0

我現在有這個問題!還有什麼你從那以後嘗試過的? – Kevin

回答

0

因爲我已經無法使用A4J:AJAX或f:Ajax和T:

<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> 

它工作正常,但我寧願修復: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});" />