【问题标题】:Omnifaces viewscoped bean is recreated over and overOmnifaces viewscoped bean被一遍又一遍地重新创建
【发布时间】:2014-01-07 09:29:27
【问题描述】:

我正在尝试使用 Omnifaces 实现 ViewScoped CDI bean。使用 jsf 页面中的 ajax 调用使用 primefaces 数据表的搜索结果填充列表的 Bean 方法。如果 bean 范围设置为 session 一切正常。当我尝试将范围设置为 Omnifaces ViewScope 时,容器开始无缘无故地多次创建和销毁 bean。这是 bean 代码:

...
import javax.inject.Named;
import org.omnifaces.cdi.ViewScoped;

@Named
@ViewScoped
public class FindClientBean implements Serializable {

@Inject
private ClientDAO clientDAO;    
@NotNull(message="Search string cannot be empty")   
private String searchString;
private List<Client> resultList;    

@PostConstruct
public void init() {
    System.out.println("init");
}

@PreDestroy
public void end() {
    System.out.println("end");
}

public void findClient() {
    System.out.println("method");
    resultList = clientDAO.findClientByNameOrLastnamePart(searchString);
}

//Getters and setters..    

}

示例输出(一个方法调用有更多的初始化和结束,我跳过了它们):

01:51:50,044 INFO  [stdout] (http-localhost-127.0.0.1-9090-5) init

01:51:50,044 INFO  [stdout] (http-localhost-127.0.0.1-9090-4) init

01:51:50,044 INFO  [stdout] (http-localhost-127.0.0.1-9090-5) end

01:51:50,045 INFO  [stdout] (http-localhost-127.0.0.1-9090-4) end

01:51:50,045 INFO  [stdout] (http-localhost-127.0.0.1-9090-5) init

01:51:50,045 INFO  [stdout] (http-localhost-127.0.0.1-9090-4) init

01:51:50,046 INFO  [stdout] (http-localhost-127.0.0.1-9090-5) end

01:51:50,046 INFO  [stdout] (http-localhost-127.0.0.1-9090-4) method

01:51:50,047 INFO  [stdout] (http-localhost-127.0.0.1-9090-5) init

01:51:50,047 INFO  [stdout] (http-localhost-127.0.0.1-9090-5) end

01:51:50,048 INFO  [stdout] (http-localhost-127.0.0.1-9090-5) init

01:51:50,048 INFO  [stdout] (http-localhost-127.0.0.1-9090-5) end

01:51:50,049 INFO  [stdout] (http-localhost-127.0.0.1-9090-5) init

01:51:50,049 INFO  [stdout] (http-localhost-127.0.0.1-9090-5) end

它可以是什么?没有找到相关的问题。 我的配置:JBoss AS 7.1、Omnifaces 1.6.3、Primefaces 4.0

【问题讨论】:

  • 你在客户端做什么动作?
  • 究竟是哪个 AS 7.1 颠覆? 7.1.0?因此,使用 Mojarra 2.1.5?而且,当您使用 javax.faces.bean 包中的 @ManagedBean @ViewScoped 时,问题会消失吗?
  • Alexandre:我正在尝试通过来自数据库的 ajax 请求使用搜索字符串填充 primefaces 数据表。
  • @BalusC:我正在使用 AS 7.1.1 和 Mojarra JSF 2.1.7。当我使用 ManagedBean ViewScoped 时,一切正常。
  • 我目前在使用 JBoss EAP 6.0.1 时遇到同样的问题

标签: jsf primefaces cdi omnifaces


【解决方案1】:

我遇到了同样的问题。它对我不起作用的原因是,在我的项目属性-> 项目方面是 3.0 版的动态 Web 项目

但在 web.xml 中,项目保存为 2.5

所以我只是将 2.5 更改为 3.0 看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>zjazdi</display-name>
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
  </servlet-mapping>
</web-app>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    相关资源
    最近更新 更多