2014-01-13 63 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的非常好的討論。