ManagedBean Params不被接受,而Bean似乎不在范围内

时间:2014-01-13 00:34:29

标签: jsf-2 primefaces

这使用相同的代码 primefaces tree control

@ManagedBean( name = "theName", eager = true)

第一个问题是为什么不能识别“名字”和“渴望”。 Eclipse建议我将任一参数更改为“value” - 所以不确定那里是什么。

然后,我小心翼翼地在必要时大写并创建我的bean

public class TreeBean implements Serializable {

并在我的xhtml

中引用它
<h:form id="mainForm">  

<p:tree id="treeSingle" value="#{treeBean.root}" var="node"
        selectionMode="single"
        selection="#{treeBean.selectedNode}">

(注意班级名称的大写)。

输出只显示一个窄条。 System.out.println(“构造函数名为”)表明该bean未知。为了支持这一点,如果按下示例中编码的按钮(顶部提供的链接),我会收到错误

Jan 13, 2014 12:19:26 AM com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError
SEVERE: javax.el.PropertyNotFoundException: /HelloWorld.xhtml @23,50 selection="#{treeBean.selectedNode}": Target Unreachable, identifier 'treeBean' resolved to null
at com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:133)

我现在已经没有想法可能会出现什么问题。是否有任何进一步调试的方法或任何人对eager / name事物有任何想法以及导致Bean类(我假设)不被看见的原因。

提前致谢。 凯文

2 个答案:

答案 0 :(得分:3)

应该以这种方式定义bean:

@ManagedBean(name="treeBean")
@SessionScoped // or whatever scope you would like to use
public class TreeBean implements Serializable {
....

XHTML中的用法:...="#{treeBean.root}"

@ManagedBean(name="xyz")
@SessionScoped // or whatever scope you would like to use
public class TreeBean implements Serializable {
....

XHTML中的用法:...="#{xyz.root}"

bean name只是地图的一个键,您可以随意命名

bean的范围应来自包javax.faces.bean

即。对于您必须导入的 sessionscoped bean

import javax.faces.bean.SessionScoped;

和managedBean Annotation

import javax.faces.bean.ManagedBean;

答案 1 :(得分:-1)

Here您可以找到定义JSF托管bean的不同方法,还可以here找到关于托管bean的非常好的讨论。