带有参数的getter的JSTL或JSP 2.0 EL

use*_*783 8 java jsp jstl properties

如何使用JSTL或JSP 2.0 EL访问具有参数的getter?

我想访问这样的东西:

public FieldInfo getFieldInfo(String fieldName) {
 ....
}
Run Code Online (Sandbox Code Playgroud)

我可以使用映射属性在Struts中访问它,但不知道它是否可以在JSTL或JSP 2.0中使用.

我尝试了一切,但没有工作.

Bal*_*usC 22

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

${bean.getFieldInfo('fieldName')}
Run Code Online (Sandbox Code Playgroud)

既然你明确提到了JSP 2.0,它是旧Servlet 2.4规范的一部分,我认为没有升级空间.你最好的选择是替换方法

public Map<String, FieldInfo> getFieldInfo() {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

以便您可以按如下方式访问它

${bean.fieldInfo.fieldName}
Run Code Online (Sandbox Code Playgroud)

要么

${bean.fieldInfo['fieldName']}
Run Code Online (Sandbox Code Playgroud)

要么

${bean.fieldInfo[otherBean.fieldName]}
Run Code Online (Sandbox Code Playgroud)