2

I have a jsp tag which takes a javax.el.MethodExpression as attribute:

<%@ attribute name="action" required="true" type="javax.el.MethodExpression" rtexprvalue="true" %>

within the same tag I have:

<h:commandLink action="#{action}">
    link text
</h:commandLink>

I'm getting the following error when I try to click the link:

javax.faces.FacesException: #{action}: org.apache.jasper.el.JspMethodNotFoundException: /WEB-INF/tags/pager/pager.tag(17,1) '#{action}' Identity 'action' was null and was unable to invoke

is it possible for the commandLink to properly invoke the "action" method?

Jason Aller
  • 3,541
  • 28
  • 38
  • 38
marcosbeirigo
  • 11,098
  • 6
  • 39
  • 57

2 Answers2

2

It's been a while since I did JSF, but I'm pretty sure a method expression is of the form: #{bean.method}. You can't just say #{method}.

noah
  • 21,289
  • 17
  • 64
  • 88
2

Don't create a JSP tag. Create a JSF component. Extend UIComponentELTag. Tutorials here.

Or, if you're using Facelets, consider a template using ui:composition. Tutorials here.

Or, if you're already on JSF 2.0, you can get a step further with composite components. Tutorial here.

BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555