2012-06-15 68 views
0

我的渲​​染有一張桌子,其中有一個單選按鈕預期用於h AJAX不工作。 即在選擇radioButton時需要重新呈現整個表單。 但它不工作。F:內部UI selectOneRadio:重複

這裏是我的代碼:

<h:form id="summaryForm" prependId="false"> 
<table> 
<tbody> 
    <ui:repeat var="switchRow" value="#{designBean.switchReport.rowList}" varStatus="rowStatus"> 
    <tr class="#{rowStatus.even?'even':'odd'}"> 
     <td> 
    <h:selectOneRadio id="switchTypeSelectionId" 
        name="switchTypeSelection" 
       styleClass="choices" 
       onclick="selectRadioButton(this);" 
       value="#{designBean.designTool.switchProduct}"> 
     <f:selectItem itemValue="#{switchRow.rowId}"/> 
     <f:ajax event="click" execute="@this" render="@form" listener="#{designBean.showIGBTDetails}"/> 
    </h:selectOneRadio> 
    </td> 
    <ui:repeat var="switchColValue" value="#{switchRow.rowValues}"> 
     <td> 
        <h:outputText value="#{switchColValue}" /> 
       </td> 
    </ui:repeat> 
     </tr> 
    </ui:repeat> 
</tbody> 
</table> 
</h:form> 
+0

您的''屬性在EL表達式中包含語法錯誤。這是否也存在於您的真實代碼中? – BalusC

+1

好的,EL語法錯誤因此不是您具體問題的原因。現在我們終於可以提前:)這個問題在老版本的Mojarra版本中被認爲是一個錯誤。你在用Mojarra嗎?如果是這樣,哪個版本?如果它比較老舊(超過6個月),你有沒有試過升級它? – BalusC

回答

0

我不知道,如果一個click事件是你在這種情況下所需要的。嘗試使用onchange。我記得過去曾提及過這件事。但是,如果您在已選擇的無線電項目上單擊多次,它將不會觸發。

而且,你有沒有嘗試使用形式的ID而不是@form?像render =「summaryForm」一樣。

+0

當使用形式的ID而不是@form, 像你所說渲染=「summaryForm」, 這是給我下面的異常是什麼。 當我看着查看源代碼時,生成的html組件id與summaryForm相同。 重度:javax.faces.FacesException:包含未知的ID「semiSelectionForm」 - 組件的情況下無法找到它switchTypeSelectionId – uday

+0

嗯,這聽起來很奇怪。但是我忘了一些東西:也許最好使用冒號,render =「:summaryForm」。 JSF使用冒號作爲ID分隔符,(考慮一個id爲foo的表單,它嵌套在id欄中,你可以用foo:bar或者:foo:bar來訪問它)。值得一試,但說實話,我有點卡在這裏,也許在元素中使用這個東西是有限制的。 –

0

經過一番研究,我發現了一個簡單的方法來實現這一目標, 這裏是我的回答, 而不是使用H:selectOneRadio,將其改爲HTML和包裹在一個,現在點擊panelGrid的組件調用AJAX功能/監聽器。

<h:form id="summaryForm" prependId="false"> 
<table> 
<tbody> 
    <ui:repeat var="switchRow" value="#{designBean.switchReport.rowList}" varStatus="rowStatus"> 
    <tr class="#{rowStatus.even?'even':'odd'}"> 
     <td> 
      <h:panelGrid id="switchSelectionId" styleClass="choices"> 
       <input type="radio" name="switchTypeSelection" value="#{switchRow.rowId}" /> 
       <f:ajax event="click" execute="@this" render="@form" listener="#{designBean.showIGBTDetails}"/> 
      </h:panelGrid> 
     </td> 
     <ui:repeat var="switchColValue" value="#{switchRow.rowValues}"> 
     <td> 
      <h:outputText value="#{switchColValue}" /> 
     </td> 
     </ui:repeat> 
     </tr> 
    </ui:repeat> 
</tbody> 
</table> 
</h:form>