是否可以在 JSF 2.0 Facelet EL 中调用预期属性的方法。例如:
<h:outputText value="#{pojo.methodName}" />
其中pojo是POJO的实例,methodName是方法的名称。抛出错误是因为JSF希望找到getMethodName方法。 在有人问为什么需要这个之前,请考虑我们想要在计算的文本中显示的任何值,并且我们没有所需的getter方法和源代码。
BalusC回答后的更新:
无法重命名,因为没有可用的源代码。 methodName()不起作用。唯一的区别是在实际代码中它的链式pojo。
<h:outputText value="#{pojo1.pojo2.methodName()}" />
由于其他属性适用于pojo2,我假设它的methodName无法调用。服务器说“该类没有属性methodName”
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
清空faces-config
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
</faces-config>
P.S。环境JBoss 6和JSF 2
答案 0 :(得分:2)
添加括号:
<h:outputText value="#{pojo.methodName()}" />
(仅适用于EL EE,它是Java EE 6的一部分,所以它只能用于Tomcat 7,Glassfish 3等中的框,另请参阅Invoke direct methods or methods with arguments / variables / parameters in EL) < / p>
或者只是重命名方法:
public String getMethodName() {
// ...
}