Jsf 使用p:commandButton设置对象

Jsf 使用p:commandButton设置对象,jsf,primefaces,Jsf,Primefaces,所以我有一个像这样的豆子。它保存currentPara,稍后将在另一个bean中使用该bean(该bean应只保存一种类型的Para)。 此currentPara是ParaA或ParaB public class ParaBuilderBean { private Para currentPara; private ParaA paraA; private ParaB paraB; } public class ParaA extends Para{ priva

所以我有一个像这样的豆子。它保存
currentPara
,稍后将在另一个bean中使用该bean(该bean应只保存一种类型的
Para
)。 此
currentPara
ParaA
ParaB

public class ParaBuilderBean {
    private Para currentPara;
    private ParaA paraA;
    private ParaB paraB;
}

public class ParaA extends Para{
    private List<String> strings;
    private String currentString;
}

public class ParaB extends Para{
    private int min;
    private int max;
}
因此,对于每种类型的
Para
都应该有一个不同的.xhtml。每个.xhtml都保存单独的元素来设置其
Para
类型的字段。例如
paraAPanel.xhtml

<h:panelGrid>
    <p:outputLabel value="Enter String" />
    <p:inputText value="#{paraBuilderBean.paraA.currentString}"/>
        <p:commandButton value="Add" ajax="false">
            <p:collector value="#{paraBuilderBean.paraA.currentString}" unique="false" addTo="#{paraBuilderBean.paraA.strings}"></p:collector>
        </p:commandButton>
</h:panelGrid>

现在我的问题是:


如何使用
main.xhtml
中的
p:commandButton
将my
ParaBuilderBean
currentPara
设置为choosen?我想实现一些类似于
action=“#{paraBuilderBean.setCurrentPara(paraBuilderBean.paraA)}”
的功能,这可以完成这项工作吗

<p:commandButton value="ParaA" update="@form" actionListener="#{paraPanelBean.setCurrentPanel('paraAPanel')}">
<f:setPropertyActionListener target="#{paraBuilderBean.currentPara}" value="#{paraBuilderBean.paraA}" />
</p:commandButton>

1个问题/问题请。。。否则,回答和评论将变得无法阅读
<p:commandButton value="ParaA" update="@form" actionListener="#{paraPanelBean.setCurrentPanel('paraAPanel')}">
<f:setPropertyActionListener target="#{paraBuilderBean.currentPara}" value="#{paraBuilderBean.paraA}" />
</p:commandButton>