Java ViewScope bean是否支持JSF ajax调用?
ViewScope bean允许ajax调用吗 例如: 这是一个xhtml页面:Java ViewScope bean是否支持JSF ajax调用?,java,jsf,view,primefaces,updates,Java,Jsf,View,Primefaces,Updates,ViewScope bean允许ajax调用吗 例如: 这是一个xhtml页面: <h:body> <h:selectOneMenu value="#{test.selected}"> <f:selectItem itemValue="2" itemLabel="2" /> <f:selectItem itemValue="3" itemLabel="3" />
<h:body>
<h:selectOneMenu value="#{test.selected}">
<f:selectItem itemValue="2" itemLabel="2" />
<f:selectItem itemValue="3" itemLabel="3" />
<f:ajax listener="#{test.updateData()}" />
</h:selectOneMenu>
</h:body>
当我尝试这个时,它不起作用 您有一个错误的设置器,这会导致错误
public void setTest(String test) {
this.selected = selected;
}
这一定是
public void setSelected(String test) {
this.selected = test;
}
另一方面,此设置程序是为h:selectOneMenu value={test.selected}调用的,当在组合框上选择某个项目时,会触发该设置程序。您有一个错误的设置程序,导致错误
public void setTest(String test) {
this.selected = selected;
}
这一定是
public void setSelected(String test) {
this.selected = test;
}
另一方面,此setter是为h:selectOneMenu value={test.selected}调用的,当在组合框上选择某个项目时,该值将被激发。实际上,到目前为止,您发布的代码中有3个严重问题: 那辆车不见了。但不确定这是否是对问题或实际代码的粗心准备。解决方案显而易见:将分组的UIInput和UICommand组件放在一个独立的目录中 在当前的JSF版本中,JSF的范围注释@javax.faces.bean.ViewScoped在CDI的bean管理注释@Named上不起作用 基本上有3种解决方案: 改用CDI的@ConversationScope。另请参见以获取具体示例。然而,这有一个令人讨厌的副作用,即在每个结果URL中附加一个cid请求参数。 用于将JSF@ViewScoped连接到CDI。然而,这有一个令人讨厌的副作用,即在每个结果URL中附加一个windowId请求参数。 等待JSF2.2发布,这样您就可以使用CDI兼容@javax.faces.view.viewscope注释,该注释将其与JSF视图状态联系起来。 然而,这并不是您的具体问题的原因,因为应该只调用bean操作,但是bean的行为就像@RequestScoped 缺少setter方法。但是,当表单成功提交时,这应该会向服务器日志抛出一个相当自我解释的PropertyNotWritableException
还有第四个可能的原因,根据目前提供的信息无法确定:缺少一个可能会导致失败,因为所需的jsf.js无法自动包含。实际上,到目前为止发布的代码中有3个严重问题: 那辆车不见了。但不确定这是否是对问题或实际代码的粗心准备。解决方案显而易见:将分组的UIInput和UICommand组件放在一个独立的目录中 在当前的JSF版本中,JSF的范围注释@javax.faces.bean.ViewScoped在CDI的bean管理注释@Named上不起作用 基本上有3种解决方案: 改用CDI的@ConversationScope。另请参见以获取具体示例。然而,这有一个令人讨厌的副作用,即在每个结果URL中附加一个cid请求参数。 用于将JSF@ViewScoped连接到CDI。然而,这有一个令人讨厌的副作用,即在每个结果URL中附加一个windowId请求参数。 等待JSF2.2发布,这样您就可以使用CDI兼容@javax.faces.view.viewscope注释,该注释将其与JSF视图状态联系起来。 然而,这并不是您的具体问题的原因,因为应该只调用bean操作,但是bean的行为就像@RequestScoped 缺少setter方法。但是,当表单成功提交时,这应该会向服务器日志抛出一个相当自我解释的PropertyNotWritableException
还有第四个可能的原因,根据目前提供的信息无法确定:缺少一个可能会导致失败,因为所需的jsf.js无法自动包含。您不太清楚,因为它不起作用。我将简单地假设您没有看到任何打印到标准输出的内容。今后,请从开发人员的角度而不是最终用户的角度来阐述这个问题。是否调用了JS/ajax函数?读取JS控制台中的错误HTTP请求是否正确发送?阅读浏览器开发工具集中网络部分的HTTP流量监视器bean是构造的,方法是调用的吗?放置断点、运行调试器、读取服务器日志以查找异常等返回的HTTP响应的主体包含什么?等等,你不太清楚我没工作。我将简单地假设您没有看到任何打印到标准输出的内容。今后,请从开发人员的角度而不是最终用户的角度来阐述这个问题。是否调用了JS/ajax函数?读取JS控制台中的错误HTTP请求是否正确发送?阅读浏览器开发工具集中网络部分的HTTP流量监视器bean是构造的,方法是调用的吗?放置断点、运行调试器、读取服务器日志以查找异常等返回的HTTP响应的主体包含什么?等