選擇的關鍵行收集信息我有一個頁面,我要求用戶在inputText框中輸入一個值。根據輸入的值,我用我的數據庫中的信息創建一個日期表。數據表中的一列是selectOneRadio,因此每一行都有自己的單選按鈕。然後用戶應該能夠選擇其中一個單選按鈕,然後單擊一個命令按鈕(這是數據表的頁腳),該命令將根據所選單選按鈕來獲取哪一行。我遇到的問題是在按鈕上單擊輔助bean方法沒有被調用。這個問題只發生在我去頁面後創建表格。如果我硬編碼的值導致數據表存在頁面的創建存在這個問題不會發生。我不完全確定,但我相信這個問題正在發生,因爲呈現的數據表面最初設置爲false,出於某種原因,這會影響binding或valueChangeListener的某些方式。JSF:基於用戶輸入文本創建datatable,並從單選按鈕
這是
<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>
你可以發佈bean「applContAdminB」的代碼嗎? 你能確認「applContAdminB.setSelectedRow」是否被調用了正確的值? – baraber 2012-08-06 17:01:31
你回答了你自己的問題。這是使用ajax呈現的弱點。我有一個導航小部件的類似問題,我曾經通過ajax切換呈現綁定的屬性。沒有任何魔法我可以鼓起來,隱藏面板渲染,而隱藏最初渲染的面板。你可以嘗試通過javascript隱藏div,當你的ajax返回時,相應地轉換div的「顯示」屬性。這就是我解決它的方法。這是不幸的,但我找不到一個可取的替代解決方案。 – him 2012-08-06 19:24:39