Java JSTL或JSP2.0 EL用于带参数的getter

Java JSTL或JSP2.0 EL用于带参数的getter,java,jsp,properties,jstl,Java,Jsp,Properties,Jstl,如何使用JSTL或JSP2.0 EL访问具有参数的getter 我想访问如下内容: public FieldInfo getFieldInfo(String fieldName) { .... } 我可以在Struts中使用,但不知道在JSTL或JSP2.0中是否可以 我尝试了所有方法,但都不起作用。在EL中传递方法参数仅受EL 2.2支持的EL规范的支持。默认情况下,EL2.2在Servlet3.0/JSP2.2容器中提供。因此,如果您使用的是Servlet 3.0容器(Tomcat 7、

如何使用JSTL或JSP2.0 EL访问具有参数的getter

我想访问如下内容:

public FieldInfo getFieldInfo(String fieldName) {
 ....
}
我可以在Struts中使用,但不知道在JSTL或JSP2.0中是否可以


我尝试了所有方法,但都不起作用。

在EL中传递方法参数仅受EL 2.2支持的EL规范的支持。默认情况下,EL2.2在Servlet3.0/JSP2.2容器中提供。因此,如果您使用的是Servlet 3.0容器(Tomcat 7、Glassfish 3、JBoss 6等),并且您的
web.xml
声明为符合Servlet 3.0规范,那么您应该能够如下访问它

${bean.getFieldInfo('fieldName')}
${bean.fieldInfo.fieldName}
因为您明确提到了JSP2.0,它是旧的Servlet2.4规范的一部分,所以我假设没有升级的空间。您最好的选择是使用替换方法

public Map<String, FieldInfo> getFieldInfo() {
    // ...
}


为什么getter会有一个参数?这闻起来有鱼腥味!我使用的是Servlet2.4,无法更改。我无法使用
getFieldInfo
方法修改bean,并试图避免将其包装在映射中或使用自定义标记/函数访问它。没有办法用参数访问它吗?这是坚持旧技术的缺点。如果有其他方法,我会在回答中提到这一点。但是,您可以提供
Map
的自定义实现,其中您使用某种延迟加载覆盖
get()
方法,这样您就不需要预先填充整个Map。
${bean.fieldInfo['fieldName']}
${bean.fieldInfo[otherBean.fieldName]}