1

我是 JSF 的初学者,我对 selectonemenu 项目有问题。当我选择一个项目时,例如“FirstLabel”,应该显示输出面板。但是,selectone 菜单不会更新我的选择。我使用 primefaces 3.1 库。如何我解决了这个问题。感谢您的帮助。

            <p:selectOneMenu value="#{denemeView.str}" effect="fold" editable="true"  >  
                <f:selectItem itemLabel="Please choose!." itemValue="" /> 
                <f:selectItem itemLabel="FirstLabel" itemValue="1" /> 

                <f:selectItem itemLabel="SecondLabel" itemValue="2" /> 

                <p:ajax   process="@this"  update=":Form2:panel1"/>
                <p:ajax process="@this" update=":Form2:panel2"/>
            </p:selectOneMenu> 


        </p:outputPanel> 


        <p:outputPanel id="panel1" rendered="#{denemeView.str=='1'}">

            <h:outputText value="Output: * " />
            <p:inputText id="out" value="#{denemeView.islem}" />



        </p:outputPanel>

        <p:outputPanel id="panel2" rendered="#{denemeView.str=='2'}">

            <h:outputText value="True choice! " />

        </p:outputPanel>
4

1 回答 1

1

如果 JSF 组件已rendered="false"设置,则它不会被重新渲染(组件对象不存在于对象树中)并且无法使用<p:ajax update="someId"/>或更新<f:ajax render="someId"/>。您需要做的是将这两个面板包装在一个外部面板中并更新该面板。像这样的东西:

<p:ajax   process="@this"  update="outerPanel"/>
...
<p:outputPanel id="outerPanel">
 <p:outputPanel id="panel1" rendered="#{denemeView.str=='1'}">
        <h:outputText value="Output: * " />
        <p:inputText id="out" value="#{denemeView.islem}" />
 </p:outputPanel>

 <p:outputPanel id="panel2" rendered="#{denemeView.str=='2'}">
        <h:outputText value="True choice! " />
 </p:outputPanel>
</p:outputPanel>

有关类似问题,请参见此处。

于 2013-08-06T08:30:29.420 回答