提问人:amine kacem 提问时间:12/15/2021 最后编辑:amine kacem 更新时间:12/22/2021 访问量:245
Ajax 事件从 6.2 到 7.0 的 Primeface 迁移问题
primeface migration problem with ajax events from 6.2 to 7.0
问:
你好,请我需要帮助;我的网页中有一个工作模拟,其中包含一些带有 Bean 方法的按钮,这些按钮工作正常,并使用 p:componenet_id 更新页面中的一些组件,并且在 6.2 中也工作正常,直到我升级到 primeface 7.0 现在,当我单击相同的按钮时,它所做的就是刷新表单 并跳过任何名为 的 Bean 方法;
主要问题:现在每当我尝试使用 commandlink 或单选按钮时,ajax 都会刷新我的页面,它们都使用 ajax 标签或更新和处理通过其 ID 定位其他组件以及调用一些后备 bean 方法!
答:
更新:所以我发现 p:componenet('ID_comp') 在 primefaces 7.0 中仍然受支持,但在 8.0 中将被删除 所以现在我仍然在 7.0 中,我确信 p:componenet('ID_comp') 不是做出非预期行为的人; 但是我正在使用 PrimeFaces 扩展 JAR 版本 7.0.2 和 PrimeFaces JAR 7.0,除了此页面外,该项目似乎工作正常
我注意到的另一件事是,当我在该命令链接上编写 ajax=“false” 时,它什么也没做;在 bean 或接口中不执行任何内容;当然,ajax=“true ” 再次出现同样的意外行为。
现在的主要问题是,虽然我在 xhtml 中的代码仍然相同;ajax 是做出非预期行为的那个,这使得 actionListener 根本不执行。 以下是不起作用和当前 Senario 的代码示例:
<p:commandLink value="Search" process="@this" actionListener="#{bean.newPerson(true)}" rendered="#{empty bean.offre.id and !disabled}"
update=":#{p:component('panelPerson')} :#{p:component('toolbar_person')}" type="button" >
<p:resetInput target="panelPerson" />
</p:commandLink>
所以这应该做的是打开一个用于搜索一个人的输入并清空表单中的所有输入,同时执行函数 bean.newPerson(true),但事实并非如此;在 7.0 版中,尽管我从未更改过该代码;它现在所做的就是刷新孔表单,跳过 bean.newPerson(true) 并执行初始化页面的 bean 方法(只应在页面操作时执行),它还会重置所有输入。 是与ajax有关还是与动作有关,监听器不再起作用??或者 6.2 和 7.0 之间的变化究竟是什么,而它是相同的代码。
注意:窗体中几乎每个带有 actionlistener 的按钮(commandlinks 和 radio button)也会发生这种情况;总是重新执行 bean.init 并重置所有表单,就好像我重新加载了 hole 页面一样。
评论