Facelet方法调用所需的属性

时间:2011-12-06 11:30:16

标签: jsf-2 facelets el

是否可以在 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

1 个答案:

答案 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() {
    // ...
}