0

我正在渲染一个带有单选按钮的表格。即,在选择radioButton 时,需要重新渲染整个表单。但这是行不通的。

这是我的代码:

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

2 回答 2

0

我不知道在这种情况下是否需要单击事件。尝试使用 onchange。我记得以前提到过这件事。但是,如果您在已选择的单选项目上单击多次,它不会触发。

另外,您是否尝试使用表单的 id 而不是@form?像渲染 =“summaryForm”。

于 2012-06-15T05:26:50.913 回答
0

经过一番研究,我找到了一种简单的方法来实现这一点,这是我的答案,而不是使用 h:selectOneRadio,将其更改为 HTML 并将其包装在 a 中,现在单击 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>
于 2012-07-04T01:57:24.367 回答