JSF通过Session传递POJO

时间:2016-11-19 14:16:00

标签: java jsf jsf-2

所以我有一个豆

public class MyBean
{
private List<MyClassObject> myList;
//getters and setters
}

MyClassObject类里面有另一个列表

public class MyClassObject
{
 private List<MySubClassObject>mysubList;
 //getters and setters
}

然后我有一个JSF页面

<p:dataTable id="xyz" var="Class" value="#{MyBean.myList}">

            <f:facet name="header">
                MyClassObjects
            </f:facet>

            <p:column headerText="Prop1">
                <h:outputText value="#{Class.prop1}" />
            </p:column>
            <p:column headerText="Prop2">
                <h:outputText value="#{Class.prop2}" />
            </p:column>
            <p:column headerText="Prop3">
                <h:outputText value="#{Class.Prop4}" />
            </p:column>
            <p:column headerText="Sub Classes">
                <p:commandButton value="Open Sub Class" url="/faces/pages/SomeOtherPage.xhtml"/>
            </p:column>
        </p:dataTable>

现在我的目标是创建一个按钮/ commandButton或任何要点击的东西,它将导航到另一个页面并显示在该特定行var中找到的另一个类似的MySubClassObject列表。

有没有办法将var =“Class”传递给url目标,以便下一个表可以访问它(这是必需的逻辑,我知道确切的执行流程的答案是否定的,什么我正在寻找的是如何正确实现相同的功能)?

非常感谢!

1 个答案:

答案 0 :(得分:1)

您可能需要以下内容:

 <p:commandButton value="Open Sub Class"
    action="#{MyBean.selectClass(Class)} />

在你的MyBean&#39;你必须写下这样的东西:

public String selectClass(MyClassObject obj){
    this.selectedObj = obj;
    return "/faces/pages/SomeOtherPage.xhtml"
}

在这里,您可以访问&#34; var = Class&#34;通过#{MyBean.selectedObj}

这里重要的一点是MyBean的范围。好看。