Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Invoking methods with parameters by EL in JSF 1.2

Tags:

jsf

el

jsf-1.2

I am using a datatable and for each row I have two buttons, an "Edit" and a "Delete".

I need these buttons to be read-only, i.e. disabled, if a certain condition is met for the row in question. I have seen in JSF 2 that it is possible to pass parameters to method calls. Is there anything equivalent in JSF 1.2?

Ideally what I would like it something like (the looping variable is loop and there is another bean, helper, which contains the method I would like to invoke):

<h:commandButton value="Edit"
                   disabled="#{helper.isEditable(loop.id)}" />

In this case it does not make semantic sense to add an isEditable attribute to the bean and it is not practical to create a wrapper Object around the bean.

Thanks in advance.

like image 475
jabclab Avatar asked Nov 30 '11 11:11

jabclab


1 Answers

I have seen in JSF 2 that it is possible to pass parameters to method calls. Is there anything equivalent in JSF 1.2?

Passing parameters to method calls is not specific to JSF 2. It is specific to EL 2.2, which is in turn part of JSP 2.2 / Servlet 3.0 / Java EE 6. JSF 2 just happens to be part of Java EE 6 as well. In other words, if you deploy your JSF 1.2 web application to a Servlet 3.0 compatible container like Tomcat 7, Glassfish 3, etc and your web.xml is declared conform Servlet 3.0 spec version, then it'll just work out the box for JSF 1.x as well.

If you're however still targeting a container of an older Servlet version, then you need to supply a different EL implementation which supports invoking methods with arguments. One of those implementations is JBoss-EL which you can install by just dropping the jboss-el.jar file in /WEB-INF/lib of your webapp and adding the following context parameter to the web.xml. Here's a Mojarra-specific example (Mojarra is the codename of JSF RI):

<context-param>     
    <param-name>com.sun.faces.expressionFactory</param-name>
    <param-value>org.jboss.el.ExpressionFactoryImpl</param-value>   
</context-param>

If you're using MyFaces as JSF implementation, you need the following context parameter instead:

<context-param>
    <param-name>org.apache.myfaces.EXPRESSION_FACTORY</param-name>
    <param-value>org.jboss.el.ExpressionFactoryImpl</param-value>   
</context-param>

See also:

  • Invoke direct methods or methods with arguments / variables / parameters in EL
like image 163
BalusC Avatar answered Nov 18 '22 10:11

BalusC