在JSF 1.2中通过EL调用具有参数的方法
我正在使用一个数据表,每行我有两个button,一个“编辑”和一个“删除”。
我需要这些button是只读的,即禁用,如果某个条件符合所述行。 我在JSF 2中看到,可以将parameter passing给方法调用。 JSF 1.2中有什么等价的东西吗?
理想情况下,我想要的东西就像(循环variables是循环 ,还有另一个bean, 助手 ,其中包含我想要调用的方法):
<h:commandButton value="Edit" disabled="#{helper.isEditable(loop.id)}" />
在这种情况下,向bean中添加isEditable属性并没有语义上的意义,并且在bean周围创build一个包装对象是不现实的。
提前致谢。
我在JSF 2中看到,可以将parameter passing给方法调用。 JSF 1.2中有什么等价的东西吗?
将parameter passing给方法调用不是特定于JSF 2.它是EL 2.2的特定部分,而它是JSP 2.2 / Servlet 3.0 / Java EE 6的一部分.JSF 2恰好也是Java EE 6的一部分。 换句话说,如果您将JSF 1.2 Web应用程序部署到像Tomcat 7,Glassfish 3等Servlet 3.0兼容容器,并且您的web.xml
声明符合Servlet 3.0规范版本,那么它将只是为JSF 1.x也是如此。
但是,如果您仍然定位一个较旧的Servlet版本的容器,那么您需要提供一个不同的EL实现,该实现支持使用参数调用方法。 其中一个实现是JBoss-EL ,您可以通过将jboss-el.jar
文件放在/WEB-INF/lib
jboss-el.jar
程序的/WEB-INF/lib
中,并将以下上下文参数添加到web.xml
。 这是一个Mojarra特定的例子( Mojarra是JSF RI的代号):
<context-param> <param-name>com.sun.faces.expressionFactory</param-name> <param-value>org.jboss.el.ExpressionFactoryImpl</param-value> </context-param>
如果您使用MyFaces作为JSF实现,则需要使用以下上下文参数:
<context-param> <param-name>org.apache.myfaces.EXPRESSION_FACTORY</param-name> <param-value>org.jboss.el.ExpressionFactoryImpl</param-value> </context-param>
也可以看看:
- 在EL中调用带有参数/variables/参数的直接方法或方法
- 如何比较EL中的char属性
- 如何创build一个自定义EL函数来调用一个静态方法?
- 如何testingJSF中的枚举相等性?
- 如何在另一个ELexpression式中嵌套一个ELexpression式
- 如何在EL中评估scriptletvariables?
- 识别并解决javax.el.PropertyNotFoundException:目标无法访问
- 没有bean属性的JSF组件绑定
- c:forEach抛出javax.el.PropertyNotFoundException:在java.lang.Stringtypes中找不到属性'foo'
- h:绑定到String属性的inputText正在提交空string而不是null