ViewParam和会话范围的bean

时间:2011-09-16 16:54:37

标签: jsf jsf-2

我定义了viewParam来处理GET请求,但会话bean是null

/treeTable2.xhtml @28,119 value="#{conformanceProfileController.dataValueAssertionController.library_line}": Target Unreachable, identifier 'conformanceProfileController' resolved to null

GET请求

treeTable2.jsf?category=Message

XHTML代码

<f:metadata>
  <f:viewParam name="category" value="#{conformanceProfileController.category}" />
</f:metadata>

The Bean

@ManagedBean
@SessionScoped
public class ConformanceProfileController implements Serializable {
    private String category;

    public String getCategory() {
        return category;
    }

    public void setCategory(String category) {
        this.category = category;
    }
}

我的开发服务器是Tomcat 7.0,我使用Mojarra 2.1.0

编辑:我创建了一个带有新页面和新bean的简化版本。帖子中的代码与我机器上的代码相同。

XHTML代码:

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    >
<h:head>
</h:head>
<f:metadata>
    <f:viewParam name="category" value="#{myBean.category}" />
</f:metadata>
<h:body>
</h:body>
</html>

为myBean:

import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean
@SessionScoped
public class MyBean implements Serializable {
    private String category;

    public MyBean() {
        System.out.println("Creation");
    }

    public String getCategory() {
        return category;
    }

    public void setCategory(String category) {
        this.category = category;
    }

}

GET请求treeTable3.jsf?category=Message

错误消息: /treeTable3.xhtml @8,60 value="#{myBean.category}": Target Unreachable, identifier 'myBean' resolved to null

2 个答案:

答案 0 :(得分:1)

由于注释扫描中的do not work,Tomcat / Jetty中的Mojarra 2.1.0 a bug。升级到至少2.1.1或current 2.1.3。

这与视图参数或会话范围bean无关。在您期望@ManagedBean

的所有情况下,它都会失败

答案 1 :(得分:0)