gpt4 book ai didi

ajax - 如何知道 JSF bean setter 是从 AJAX 事件调用还是作为表单 POST 处理的一部分调用

转载 作者:行者123 更新时间:2023-12-01 05:19:02 24 4
gpt4 key购买 nike

我有一个表单,其中包含一个零件编号 inputText 字段和一些其他代表零件属性的字段。如果用户输入现有零件编号,我想用零件的现有属性填充其他字段。然后,运算符(operator)可以选择将零件编号更改为其他内容(本质上是使用现有零件作为模板创建新零件)和/或修改其属性。我定义了一个 AJAX 事件以在零件编号更改时更新模型,因此我可以从数据库中检索属性:

<f:ajax event="valueChange" execute="@this" render="partlength" />

我的问题是:零件编号 setter (例如 setPartNumber() )如何知道它是作为 AJAX 事件的一部分被调用的,在这种情况下我想获取属性,或者作为更新模型值阶段的一部分正在发布的表格,在这种情况下我不会?还是有更好的方法来完成我想做的事情?

最佳答案

您可以通过 PartialViewContext#isAjaxRequest() 确定当前请求是否为 ajax 请求。您可以获取 PartialViewContext FacesContext#getPartialViewContext() .

if (FacesContext.getCurrentInstance().getPartialViewContext().isAjaxRequest()) {
// The current request is an ajax request.
}

另一种方法是在 listener 中完成工作。 <f:ajax>的方法而不是在 getter/setter 中(在 getter/setter 中做生意是 poor practice 无论如何):
<f:ajax listener="#{bean.listener}" render="partlength" />

(请注意,我省略了 eventexecute 属性,因为您已经使用了默认值)

关于ajax - 如何知道 JSF bean setter 是从 AJAX 事件调用还是作为表单 POST 处理的一部分调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9022240/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com