【问题标题】:Update object in bean without reload更新 bean 中的对象而不重新加载
【发布时间】:2015-10-02 17:20:22
【问题描述】:

在我的页面上,我有来自数据库的数据的表单。我想实现,作为默认行为,将所有更改写入 db。
我找到了这样的例子

<h:selectOneMenu value="#{bean.options}" onchange="submit()"
                        var="#{bean.options}" valueChangeListener="#{bean.changeListernMethod}">
                        <f:selectItem itemValue="1" itemLabel="option1" />
                        <f:selectItem itemValue="2" itemLabel="option2" />
                        <f:selectItem itemValue="3" itemLabel="option3" />
                    </h:selectOneMenu>

但它不会调用侦听器方法并重新加载所有页面。我无法在每次 inputText 编辑或菜单选择更改时重新加载页面。你知道如何实现这种行为吗?无需重新加载页面即可更新 bean 中的对象。

【问题讨论】:

  • 你考虑过使用 AJAX 吗?
  • AJAX 可能是个好主意。但是如何在带有 Primefaces 的 JSP 中使用它呢?
  • 你是不是随便对我的一个答案投了反对票?
  • 我现在不知道你的答案在哪里。你的回答出了点问题,但我不知道是什么。
  • 嗯,我在我的用户面板中没有看到这样的“否决”操作。

标签: jsf


【解决方案1】:
<f:ajax listener="#{bean.changeListernMethod}" render="@form" event="valueChange"/>

这就是您实现部分提交的方式,或者用您的话来说:在 bean 中更新对象而不重新加载页面。我输入的行将触发 ajax 并(仅)在选择一个值并且与之前选择的值不同时更新表单。

更多信息:

https://docs.oracle.com/javaee/6/javaserverfaces/2.1/docs/vdldocs/facelets/f/ajax.html

【讨论】:

  • 所以它适用于 selectOneMenu 不在 标签中。我在帖子中添加了来源。对于 中的 selectOneMenu 侦听器未调用。
  • 如果使用素面使用
  • 这里出了点问题。我的版本和新的 cmets 被删除。我现在正在使用 p:ajax,但侦听器不在 p:dataTable 中工作
  • 你真的应该提供更多关于你的源代码的信息... :) 如果可以的话,粘贴整个页面。我提供了两种解决方案,如果不起作用,则需要更多代码...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-24
相关资源
最近更新 更多