0

我有一个页面,我要求用户在 inputText 框中输入一个值。根据输入的值,我使用数据库中的信息创建一个日期表。数据表中的一列是 selectOneRadio,因此每一行都有自己的单选按钮。然后,用户应该能够选择其中一个单选按钮,然后单击命令按钮(它是数据表的页脚),该按钮将根据选择的单选按钮获得选择了哪一行。我遇到的问题是按钮单击后没有调用支持 bean 方法。此问题仅在我转到页面后创建表时发生。如果我硬编码一个值以导致数据表在页面创建时存在,则不会发生此问题。一世'

这是jsf

<h:panelGrid columns="3">
   <h:outputLabel for="searchByContrId" value="Company Code: " />
   <h:inputText id="searchByContrId" value="#{applContAdminB.searchContrId}">
   </h:inputText>
   <h:commandButton type="submit" value="Search" id="submitSearch" action="#{applContAdminB.getEmployeesByContrId}" />
</h:panelGrid>
<br />
<h:outputText rendered="#{applContAdminB.contrIdEntered}" value="Current Administrator: " />
<h:outputText value="#{applContAdminB.adminName}" />
<h:dataTable id="empTable" var="loc" rendered="#{applContAdminB.contrIdEntered}" value="#{applContAdminB.employeesListModel}" binding="#{applContAdminB.htmlDataTable}">
    <h:column>
       <h:selectOneRadio onclick="updateRadioButtons(this);" valueChangeListener="#{applContAdminB.setSelectedRow}">
          <f:selectItem itemValue="null" itemLabel="" />
       </h:selectOneRadio>
    </h:column>
    <h:column>
       <f:facet name="header">Employee Name</f:facet>
       <h:outputText value="#{loc.empName}" />
    </h:column>
    <h:column>
       <f:facet name="header">Employee Email</f:facet>
       <h:outputText value="#{loc.empEmail}" />
    </h:column>
    <h:column>
       <f:facet name="header">Status</f:facet>
       <h:outputText value="#{loc.userStatus}" />
    </h:column>
    <f:facet name="footer">
       <h:panelGrid columns="2">
          <h:commandButton type="submit" id="transferRights-submit" value="Transfer Rights" action="#{applContAdminB.adjustAdminUser}" />
       </h:panelGrid>
    </facet>
 </h:dataTable>
4

1 回答 1

0

你是在自问自答。这是使用 ajax 渲染的一个弱点。我有一个导航小部件有类似的问题,我通过 ajax 切换了渲染绑定到的属性。在隐藏最初渲染的面板的同时,我无法使用任何魔法来渲染不可见的面板。您可以尝试通过 javascript 隐藏 div,并且当您的 ajax 返回时相应地旋转 div(s) 的“显示”属性。我就是这样解决的。很不幸,但我找不到理想的替代解决方案。- 他

于 2012-08-08T19:45:40.830 回答