2014-01-13 26 views
2

貌似不是这样使用了来自 primefaces tree controlManagedBean PARAMS不接受和豆制品范围

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

第一个问题是为什么“名”和“渴望”无法识别相同的代码。 Eclipse建议我将任一参数更改为“值” - 因此不确定那里发生了什么。

然后,在我一直小心翼翼地利用在必要和创建我的豆

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类是什么(我认为)不被看到。

在此先感谢。 凯文

回答

3

豆应该这样定义的:

@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的名字仅仅是地图中的关键,你可以将其命名任何你想要的

bean的范围应该是从包装javax.faces.bean

即对sessionscoped豆你必须导入

import javax.faces.bean.SessionScoped; 

,为managedBean注释

import javax.faces.bean.ManagedBean; 
+0

谢谢拉米。我使用了错误的输入法 - 当日食试图帮助我解决问题时,我觉得我的视线偏离了球。 – KevinY

+0

欢迎,很高兴我能提供帮助 –

-1

Here你可以找到不同的方法来定义一个JSF托管bean,并且here你可以找到一个关于托管bean的非常好的讨论。