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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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
Jsf @ViewScope在每个回发请求上调用@PostConstruct_Jsf_Jsf 2_Constructor_View Scope_Postconstruct - Fatal编程技术网

Jsf @ViewScope在每个回发请求上调用@PostConstruct

Jsf @ViewScope在每个回发请求上调用@PostConstruct,jsf,jsf-2,constructor,view-scope,postconstruct,Jsf,Jsf 2,Constructor,View Scope,Postconstruct,这似乎不对。我正在清理我的代码,我注意到了这一点。每个ajax请求都会触发@ViewScope bean的构造函数和@PostConstruct。即使是简单的数据库分页也会触发它 我认为@ViewScoped比@requestscope长,不应该在每个请求上都重新构造它。只有在GET重新加载完整的页面之后。换句话说,@ViewScoped bean的行为类似于@requestscope bean。每次回发请求都会从头开始重新创建。造成这种情况的原因有很多,其中大多数归结为,在JSF状态下,相关联

这似乎不对。我正在清理我的代码,我注意到了这一点。每个ajax请求都会触发@ViewScope bean的构造函数和@PostConstruct。即使是简单的数据库分页也会触发它

我认为@ViewScoped比@requestscope长,不应该在每个请求上都重新构造它。只有在GET重新加载完整的页面之后。

换句话说,@ViewScoped bean的行为类似于@requestscope bean。每次回发请求都会从头开始重新创建。造成这种情况的原因有很多,其中大多数归结为,在JSF状态下,相关联的JSF视图不再可用,而JSF状态在默认情况下又与HTTP会话相关

如果您可以确保HTTP会话本身不是问题的根本原因,即@SessionScoped工作完全正常时,请仔细查看下面列出的可能原因。否则,如果HTTP会话本身也在每个请求上被丢弃和重新创建,那么您需要后退一步,查看会话cookie和服务器配置。与HTTP会话中断相关的任何原因至少都超出了JSF的上下文范围


您使用的是Mojarra 2.1.17或更早版本,并且视图包含EL表达式,该表达式将视图范围内的bean属性绑定到标记属性,标记属性在执行过程中进行计算。示例是JSTL,etc或JSF,这是正确的。我在网站上添加了一个函数,在我的页面上使用c:foreach。难怪我以前没注意到。问题是ui:重复在我的情况下不起作用。部分状态保存是否可以与c:for each一起使用?不幸的是,禁用部分状态保存并不能解决JSTL标记的问题。然而,这个特殊的案例很棘手。理论上,你可以用一个完整的组件来解决这个问题,例如,它接受一个集合而不是一个。我相信这曾经是作为一个功能请求发布给PrimeFaces的,不知道Cagatay用它做了什么life@Danijel:仅使用渲染属性?另见和。或者,只需升级到Mojarra 2.1.18或更高版本。从那以后就修好了。谢谢。我在使用。。。所以我把它改成了
 <context-param>
     <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
     <param-value>false</param-value>
 </context-param>
 <context-param>
     <param-name>javax.faces.FULL_STATE_SAVING_VIEW_IDS</param-name>
     <param-value>/foo.xhtml;/bar.xhtml;/folder/baz.xhtml</param-value>
 </context-param>
 import javax.faces.bean.ManagedBean;
 import javax.faces.bean.ViewScoped;

 @ManagedBean
 @ViewScoped
 public class CorrectJSFViewScopedBean implements Serializable {
 import javax.inject.Named;
 import javax.faces.view.ViewScoped;

 @Named
 @ViewScoped
 public class CorrectCDIViewScopedBean implements Serializable {