使用托管bean将行的dataTable值传递给新的JSF或?

时间:2014-02-11 07:40:06

标签: jsf-2 primefaces datatable managed-bean view-scope

如何将dataTable中的值传递给另一个jsf页面?我设法通过使用f:param传递值,但我不知道如何获取dataTable中的数据并传递值。

<p:outputPanel id="panelSysMenuList">
    <p:dataTable id="dtSysMenu" paginator="true" paginatorPosition="bottom" paginatorAlwaysVisible="true"
                 var="menu" styleClass="panel-list"  filteredValue="#{menuController.filteredList}"
                 value="#{menuController.resultList}" emptyMessage="#{msg.noRecordsFound}"
                 rows="#{menuController.datatableMaxResult}" selection="#{menuController.selectMenu}"
                 widgetVar="widVarTable" rowKey="#{menu}" selectionMode="single"> 
        <p:column sortBy="#{menu.admenuPK.parentNode}" >
            #{menu.admenuPK.parentNode}
        </p:column>
        <p:column  sortBy="#{menu.admenuPK.node}" >
            #{menu.admenuPK.node}
        </p:column>
        <p:column sortBy="#{menu.nodeDesc}" >
            #{menu.nodeDesc}
        </p:column>
        <p:column sortBy="#{menu.className}" >
            #{menu.className}
        </p:column>
        <p:column  sortBy="#{menu.nodeRemark}" >
            #{menu.nodeRemark}
        </p:column>
    </p:dataTable>
</p:outputPanel>

<p:button id="btnAdd2" value="#{msg.sysMenuAdd}"   icon="ui-icon-plus" styleClass="action-buttons"  outcome="MenuMaint">
    <f:param name="parentNode" value="#{menuController.parentNode}" />
    <f:param name="node" value="#{menuController.selectMenu}" />
</p:button>

我的MenuMaint

<f:metadata>
    <f:viewParam name="parentNode" value="#{menuMaintController.parentNode}" />
    <f:viewParam name="node" value="#{menuMaintController.node}" />
</f:metadata>

或者无论如何我能做到吗? 顺便说一下,我正在使用ViewScoped 提前谢谢!

1 个答案:

答案 0 :(得分:0)

我已通过在网址末尾添加参数来解决我的问题

MenuMaint?parentNode=parentNode&node=selected

在MenuMaint的托管bean中,我将使用

获取参数
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("parentNode")

这使我能够以f:param

之外的其他方式获取价值