Yes, you're trying to fight the technology.
Just do this.
public class YourBean
{
public String getActionForLinkPage()
{
FacesContext facesContext = FacesContext.getCurrentInstance();
String action =
(String)facesContext.getApplication().createValueBinding("#{param.linkPage}").getValue(facesContext);
return action;
}
}
<h:commandLink action="#{YourBean.actionForLinkPage}" value="#{linkText}"/>
On 1/17/06, Garner, Shawn <[EMAIL PROTECTED]> wrote:
> Damn, get an exception with f:attribute. I thought that should work.
>
> To do <h:commandLink action="college"/> I would have to do a choose/when
> condition checking the value of #{linkPage} which can have like 12 different
> values. Seems like a messy solution to me.
>
> Shawn
>
> -----Original Message-----
> From: Garner, Shawn
> Sent: Tuesday, January 17, 2006 10:29 AM
> To: 'MyFaces Discussion'
> Subject: RE: Problem hardcoding commandLink action outcome
>
> How about using the f:attribute tag for name="action"?
>
> Shawn
>
> -----Original Message-----
> From: Mike Kienenberger [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, January 17, 2006 10:21 AM
> To: MyFaces Discussion
> Subject: Re: Problem hardcoding commandLink action outcome
>
> You are correct. It's trying to resolve it as a method binding.
>
> You need to either use
>
> <h:commandLink action="#{yourBean.yourMethodReturningCollegeAsAString}"/>
>
> or
>
> <h:commandLink action="college"/>
>
> The attribute "action" takes only a string literal or a method binding
> that returns a String. It does not take a value binding that
> evaluates to a String. So if you need the action target to be
> variable, you need to write java code to perform this logic.
> Possibly you could use some kind of JSP EL expression instead of a JSF
> EL expression, but I wouldn't recommend this approach.
>
> On 1/17/06, Garner, Shawn <[EMAIL PROTECTED]> wrote:
> >
> >
> >
> > I'm trying to hardcode the action to "college" which is in the linkPage
> > request scope variable.
> >
> > I think it's trying to resolve it as a bean action or something instead of
> > an outcome.
> >
> > Can somebody help me with how to do this.
> >
> >
> >
> > linkPage: <h:outputText value="#{linkPage}"/><br>
> >
> > <h:commandLink action="#{linkPage}" value="#{linkText}"/>
> >
> >
> >
> > This prints out:
> >
> >
> >
> > linkPage: college
> > Modify Your Answer
> >
> >
> >
> >
> >
> > I want it to resolve as if I put in <h:commandLink action="college"
> > value="Modify Your Answer"/>
> >
> >
> >
> > However when I click on the link I get: javax.faces.FacesException: Error
> > calling action method of component with id _id1:_id15
> > at
> >
> org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListen
> erImpl.java:74)
> > at
> > javax.faces.component.UICommand.broadcast(UICommand.java:106)
> > at
> > javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:90)
> > at
> > javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:164)
> > at
> >
> org.apache.myfaces.lifecycle.LifecycleImpl.invokeApplication(LifecycleImpl.j
> ava:316)
> > at
> > org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:86)
> > at
> > javax.faces.webapp.FacesServlet.service(FacesServlet.java:106)
> > at
> > jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:91)
> > at
> > jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
> > at
> > jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:259)
> > at
> > jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:541)
> > at
> > jrun.servlet.http.WebService.invokeRunnable(WebService.java:172)
> > at
> >
> jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428
> )
> > at
> > jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)
> > Caused by: javax.faces.el.ReferenceSyntaxException:
> > Expression not a valid method binding: #{linkPage}
> > at
> >
> org.apache.myfaces.el.MethodBindingImpl.resolveToBaseAndProperty(MethodBindi
> ngImpl.java:186)
> > at
> > org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:114)
> > at
> >
> org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListen
> erImpl.java:63)
> > ... 13 more
> >
> >
> >
> >
> >
> >
> >
> >
> > Shawn D. Garner
> >
> > Software Developer
> >
> > CASD EAI I
> >
> > Internet Development
> >
> >
> >
> > Email: [EMAIL PROTECTED]
> >
> > Work: (319) 665-7796
> >
> > Cell: (319) 480-4409
> >
> >
> >
> > Pearson Government Solutions
> >
> > 2450 Oakdale Blvd
> >
> > Coralville, IA 52241
> >
> >
> >
> >
> ****************************************************************************
> >
> > This email may contain confidential
> > material. If you were not an intended recipient,
> > Please notify the sender and delete all copies.
> > We may monitor email to and from our network.
> >
> >
> ***************************************************************************
> >
>
> ****************************************************************************
>
> This email may contain confidential material.
> If you were not an intended recipient,
> Please notify the sender and delete all copies.
> We may monitor email to and from our network.
> ****************************************************************************
>
> ****************************************************************************
> This email may contain confidential material.
> If you were not an intended recipient,
> Please notify the sender and delete all copies.
> We may monitor email to and from our network.
> ****************************************************************************
>