Java 如何使用primefaces的ajax刷新jstl测试?

Java 如何使用primefaces的ajax刷新jstl测试?,java,ajax,jsf,primefaces,jstl,Java,Ajax,Jsf,Primefaces,Jstl,例如:当我单击按钮A时。我得到以下文本:您选择了一个 但是当我更改按钮时,我得到了相同的文本,尽管{bean.str}的值发生了变化 这是我的密码: <p:selectOneButton id="selectId" value="#{bean.str}"> <f:selectItem itemLabel="A" itemValue="1" /> <f:selectItem itemLabel="B" itemValue

例如:当我单击按钮
A
时。我得到以下文本:
您选择了一个

但是当我更改按钮时,我得到了相同的文本,尽管
{bean.str}
的值发生了变化

这是我的密码:

<p:selectOneButton id="selectId" value="#{bean.str}">
            <f:selectItem itemLabel="A" itemValue="1" />
            <f:selectItem itemLabel="B" itemValue="2" />
            <f:selectItem itemLabel="C" itemValue="3" />
            <f:ajax event="change" render="tabView" listener="#{bean.change}" />
</p:selectOneButton>

<c:if var="test" test="#{bean.str =='1'}">
        <h:outputText value="you have choosed A" />
</c:if>
<c:if test="#{beanApplication.perspective=='2'}">
        <h:outputText value="you have choosed B" />
</c:if>
<c:if test="#{beanApplication.perspective=='3'}">
        <h:outputText value="you have choosed C" />
</c:if>


当我点击按钮时,我正在寻找一种刷新JSTL测试的方法。

您可以将所有条件放在一个面板中,然后在按钮上重新渲染。点击在您的3个输出文本上使用属性“rendered”,JSTL在JSF视图构建期间运行,而不是在JSF视图渲染期间运行。但是,在这个特定示例中,提交的值仅在视图构建时间之后设置为bean属性。视图构建时间在JSF RESTORE_视图阶段运行,但bean属性是在JSF UPDATE_模型_值阶段设置的

您需要在渲染时评估条件。使用提供的JSF组件的
rendered
属性


此外,您应该在PrimeFaces组件中使用
,而不是
。此外,您还应确保
中引用为
选项卡视图的组件(相当于
)涵盖上述三个组件。下面是一个完整的启动示例:


另见:

您忘了混淆一些
beanApplication.perspective
表达式,因此在您的问题中引入了红鲱鱼。请在真实代码中编辑并测试它,然后复制粘贴真实代码(因此,以后不要在问题中编辑)。面板组件是什么?我认为@BalusC在帖子中给出了带有示例的面板组件,组件名称是h:panelGroupthank您的回复,我的朋友!。我试过你的建议,但得到了同样的结果。现在我试着把所有的
都放在这里,不客气。JSTL问题对初学者来说确实不是很明显,但我希望错误呈现问题对初学者来说足够明显(因为这在ajax响应中是显而易见的)。