2012-10-24 4 views
0

У меня есть следующий композиционный компонент 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'. 

Но мой управляемый компонент действительно есть опубл Метод IC Строка helloTest(), а также другие методы, которые прекрасно работают в другом месте в моей странице JSFF:

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

Я много раз с разными методами, все пытался с тем же результатом. Тем не менее, если мой составной компонент выводит только строку, и я вхожу в это выражение, чтобы получить доступ к тестовому полю String напрямую, он выполняется правильно. Я не могу ссылаться ни на один из методов в PatientClinicalBean только из моего составного компонента, когда другие вызовы методов отлично работают на той же странице JSFF. Все другие примеры, которые я видел в Интернете, не имеют проблем, делая это так же, как и я, я чего-то не хватает ?!

ответ

0

на jsf2, если вы вызываете метод, вы должны добавить круглые скобки, например:

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

иначе JSF будет интерпретировать его как поле и будет пытаться найти метод getHelloTest().