Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ViewScope bean是否支持JSF ajax调用?_Java_Jsf_View_Primefaces_Updates - Fatal编程技术网

Java ViewScope bean是否支持JSF ajax调用?

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" />

ViewScope bean允许ajax调用吗

例如:

这是一个xhtml页面:

<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响应的主体包含什么?等