【问题标题】:Update JSF Component with Primefaces使用 Primefaces 更新 JSF 组件
【发布时间】:2016-09-27 03:49:15
【问题描述】:

我知道这已经被问过很多次了,但主要是用 ajax。我不能在我的项目中使用 ajax。

我想在 selectOneMenu A 上创建一个事件并更新 selectOneMenu B。

<p:selectOneMenu id="A" binding="#{bean.slmA}" >
    <f:selectItems value="#{bean.itemsA}"/>
</p:selectOneMenu>

<p:selectOneMenu id="B" binding="#{bean.slmB}">
    <f:selectItems value="#{bean.itemsB}"/>
</p:selectOneMenu>

我已经将 valueChangeListener 与向 itemsB 添加元素的方法一起使用(也是 onchange="submit()"),但 slmB 不会更新。

添加元素到 itemsB 列表后是否应该更新?

【问题讨论】:

  • 您是否故意使用绑定而不是值(您是否在 bean 上生成 selectOneMenu)?请问为什么不能用ajax?

标签: jsf jsf-2 primefaces


【解决方案1】:

如果没有 ajax,我想一个选项是使用隐藏的 commandButton 来执行完整请求(我猜还有其他选项):

<h:form id="form">
    <p:selectOneMenu id="A" value="#{bean.slmA}" onchange="$('#form\\:cb').click()">
        <f:selectItems value="#{bean.itemsA}"/>
    </p:selectOneMenu>

    <p:selectOneMenu id="B" value="#{bean.slmB}">
        <f:selectItems value="#{bean.itemsB}"/>
    </p:selectOneMenu>

    <p:commandButton id="cb" ajax="false" style="display: none" value="button" action="#{bean.functionThatFillInformationOfListB()}" />
</h:form>

Bean 必须至少为 @ViewScoped 和 functionThatFillInformationOfListB() 返回 void 或 null。请注意,我在 selectOneMenu 中将 binding 更改为 value,但如果您实际上是在 bean 上创建 selectOneMenu,请忽略这一点(我认为它仍然可以工作)。

【讨论】:

    猜你喜欢
    • 2012-07-26
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    • 2023-04-04
    • 2016-10-21
    • 2013-05-11
    相关资源
    最近更新 更多