我定义了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>
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
EDIT:我创建了一个带有新页面和新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
Mojarra 2.1.0不能在Tomcat/Jetty中工作,因为注释扫描中的一个错误。至少升级到2.1.1或当前的2.1.3。
这与视图参数或会话作用域bean无关。它只会失败,在所有情况下,你期望一个@ManagedBean
。
尝试一下@Named注释:http://download.oracle.com/javaee/6/tutorial/doc/gjbak.html