以下是第二個需求示例
選擇一行並單擊「查看詳細信息」按鈕,該按鈕將在單獨的屏幕中顯示詳細信息。
我認爲
- 你的POJO類的名字是「YouPojoClass.java」
- 你的POJO類已設置extendedDataTable的(member1中,member2,代碼)領域
- 您的數據將從yourFirstController.rowVariableList「YouPojoClass列表」
- 您的第一頁控制器名稱「yourFirstController.java 「
- 你的第二個頁面的名稱是」 secondPage.xhtml「
//在第一頁屏幕
<rich:extendedDataTable id="rowVariablepliersTable"
value="#{yourFirstController.dataModel}" var="rowVariable">
<rich:column width="300px">
<f:facet name="header">
<h:outputText value="member1" />
</f:facet>
<h:outputText value="#{rowVariable.member1}" />
</rich:column>
<rich:column width="300px">
<f:facet name="header">
<h:outputText value="member2" />
</f:facet>
<h:outputText value="#{rowVariable.member2}" />
</rich:column>
<rich:column width="90px">
<f:facet name="header">
<h:outputText value="view" />
</f:facet>
<h:commandButton
title="view"
value="view"
action="#{yourFirstController.edit(rowVariable)}"/>
</h:commandButton>
</rich:column>
</rich:extendedDataTable>
//在第一頁控制器
public String view(YouPojoClass rowVariable) {
Map<String, Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
requestMap.put("SELECTED_ITEM_ID", rowVariable.getCode());
return "secondPage";
}
//在你的第二頁控制器
public void postConstruct() {
Map<String, Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
String SELECTED_ITEM_ID = requestMap.get("SELECTED_ITEM_ID");
// .....
}
感謝您的快速響應。但是,數據表中沒有按鈕,rich:extendedDataTable之外只有一個按鈕(「查看細節」)。 – 2013-03-09 08:55:06
然後你的'extendedDataTable'的'selectionMode'屬性必須是'single' – 2013-03-09 09:00:37
根據你的實現,每一行都有一個'h:commandButton',並通過這個按鈕進行操作。但對我而言,不應該使用這樣的按鈕。 :( 此外,我應該使用'yourPojoClass.id'作爲'selectedRowId'。 – 2013-03-09 09:08:34