java - 如何使用 primefaces 的 ajax 刷新 jSTL 测试?

标签 java ajax jsf primefaces jstl

例如:当我点击按钮A .我收到以下文本:you have choosed 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 的方法 <c:if>当我点击按钮时进行测试。

最佳答案

JSTL 在 JSF View 构建期间运行,而不是在 JSF View 呈现期间运行。但是,提交的值在此特定示例中仅在 View 构建时间之后 设置为 bean 属性。 View 构建时间在 JSF RESTORE_VIEW 阶段运行,但 bean 属性在 JSF UPDATE_MODEL_VALUES 阶段设置。

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

<h:outputText value="you have chosen A" rendered="#{bean.str == '1'}" />
<h:outputText value="you have chosen B" rendered="#{bean.str == '2'}" />
<h:outputText value="you have chosen C" rendered="#{bean.str == '3'}" />

此外,您应该使用 <p:ajax>在 PrimeFaces 组件中,不是 <f:ajax> .您还应该确保引用为 tabView 的组件在 <f:ajax render> (等效于 <p:ajax update> )涵盖了上述三个组成部分。这是一个完整的启动示例:

<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" />
    <p:ajax listener="#{bean.change}" update="tabView" />
</p:selectOneButton>

<h:panelGroup id="tabView">
    <h:outputText value="you have chosen A" rendered="#{bean.str == '1'}" />
    <h:outputText value="you have chosen B" rendered="#{bean.str == '2'}" />
    <h:outputText value="you have chosen C" rendered="#{bean.str == '3'}" />
</h:panelGroup>

另见:

关于java - 如何使用 primefaces 的 ajax 刷新 jSTL 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13345212/

相关文章:

java - findbugs 显示 sessionFactory 为 null 保证被取消引用

Java 即时修改类(添加新方法)

javascript - NodeJs : can't write a file

java - JSP 和 SQL 数据插入

内存提升后 java.lang.ref.Finalizer OutOfMemory

javascript - 使用 jQuery 获取给定目录中的文件名

javascript - 上传电子邮件通知

css - 为什么 CSS 不在 chrome 中呈现,而是在 Eclipse 中工作?

java - 同一个类上注解Entity和Component是不是错了

jsf - 为 ManagedBean (JSF 1.2) 中的类获取 JSF 转换器