2012-10-24 77 views
0

引用一個bean的方法,我有以下複合材料部件TestCC.xhtml:無法從複合JSF組件

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:cc="http://java.sun.com/jsf/composite"> 
<cc:interface> 
<cc:attribute name="manager" method-signature="java.lang.String helloTest()" required="true"/> 
</cc:interface> 
<cc:implementation> 
Hello #{cc.attrs.manager} !!!!!!!!!!!!!!!!!!!!! 
</cc:implementation> 
</html> 

當我嘗試調用它在JSFF文件:

.... 
<icc:TestCC manager="#{viewScope.PatientClinicalBean.helloTest}"/> 
... 

頁面崩潰在我的複合標籤與在控制檯以下消息:

javax.el.ELException: //C:/Documents and Settings/tlam/Application Data/JDeveloper/system11.1.2.3.39.62.76.1/o.j2ee/drs/iCHIP/ViewControllerWebApp.war/WEB-INF/classes/META-INF/resources/IchipComponent/TestCC.xhtml: javax.el.PropertyNotFoundException: //C:/Documents and Settings/tlam/Application Data/JDeveloper/system11.1.2.3.39.62.76.1/o.j2ee/drs/iCHIP/ViewControllerWebApp.war/Patient/Profile/Clinical.jsff @13,86 manager="#{viewScope.PatientClinicalBean.helloTest}": The class 'patient.profile.PatientClinicalBean' does not have the property 'helloTest'. 

但我的託管bean確實有公佈IC字符串helloTest()方法,以及其他方法罰款在其他地方我JSFF頁的工作:

public class PatientClinicalBean{ 
String test = "TESTING"; 
... 
public String helloTest() { 
    return test; 
} 
... 
} 

我曾試圖與不同的方法很多次,都具有相同的結果。然而,如果我的複合組件只輸出一個字符串,並且我輸入表達式直接訪問字符串測試字段,它會正確執行。當其他方法調用在同一個JSFF頁面中正常工作時,我似乎無法僅從我的複合組件中引用PatientClinicalBean中的任何方法。我在網上看到的所有其他例子都沒有問題,就像我擁有的​​一樣,我錯過了什麼?!

回答

0

上JSF2,如果你調用一個方法,你需要添加括號,就像這樣:

.... 
<icc:TestCC manager="#{viewScope.PatientClinicalBean.helloTest()}"/> 
... 

否則JSF將它解釋爲一個字段,並會嘗試找對方法getHelloTest()。