I also had this problem month's ago and i don't like :)
Maybe it would be better if rendered attribute evaluation would be skipped
for the action-source component.
But don't know if this would have some side effects.

2012/5/9 Lim Hock-Chai <[email protected]>

> Finally got it to work inside panelgrid.  I don't understand it but it
> works.  Shasi, I think you are right about the problem is caused by
> rendered attribute being evaluated as false when clicked.  Below is what I
> did to get it to work.  Hopefully you or someone can explain why.
>
> The code change that I made to get it to work is on this line only:
> <h:panelGrid  rendered="#{not empty sessionScope.MyAccountLoginType and
> sessionScope.MyAccountLoginType==resources.LOGIN_TYPE_MY_ACCOUNT }">
>
> It works if I change it to this:
> <h:panelGrid  rendered="#{ sessionScope.MyAccountLoginType=='MA'}">
> Note : value of MA is what I have in my message bundle
> "resources.LOGIN_TYPE_MY_ACCOUNT".  Just to be sure, I did <h:outputText
> value="#{resources.LOGIN_TYPE_MY_ACCOUNT} "/> and it output value of MA
> correctly.  Not sure why I can't use it to perform the rendered test.
>
> I tried below and non of them work.  But I don't know why:
> <h:panelGrid  rendered="#{not empty sessionScope.MyAccountLoginType and
> sessionScope.MyAccountLoginType==resources.LOGIN_TYPE_MY_ACCOUNT }">
>
> <h:panelGrid  rendered="#{not empty sessionScope.MyAccountLoginType and
> sessionScope.MyAccountLoginType=='MA' }">
>
> <h:panelGrid  rendered="${not empty sessionScope.MyAccountLoginType and
> sessionScope.MyAccountLoginType=='MA' }">
>
>
> -----Original Message-----
> From: Lim Hock-Chai [mailto:[email protected]]
> Sent: Wednesday, May 09, 2012 1:52 PM
> To: MyFaces Discussion
> Subject: RE: commandlink not working in panelgrid
>
> I added an onclick="alert(#{not empty sessionScope.MyAccountLoginType and
> sessionScope.MyAccountLoginType==resources.LOGIN_TYPE_MY_ACCOUNT })" on the
> commandlink element and the alert showing value of true when I click on the
> link.
>
>
>                <h:panelGrid
>                                rendered="#{not empty
> sessionScope.MyAccountLoginType and
>
>  sessionScope.MyAccountLoginType==resources.LOGIN_TYPE_MY_ACCOUNT }">
>                        <h:outputText value=" "/>
>                        <h:outputText value="|"/>
>                        <h:commandLink
>                                immediate="true"
>                                onclick="alert(#{not empty
> sessionScope.MyAccountLoginType and
> sessionScope.MyAccountLoginType==resources.LOGIN_TYPE_MY_ACCOUNT })"
>                                style="CURSOR: pointer"
>
>  action="#{commonTaskBean.fromMSAMBackToMyAccount}">
>                                <h:outputText value="My Account"/>
>                        </h:commandLink>
>                        <h:outputText value="|"/>
>                </h:panelGrid>
>
> -----Original Message-----
> From: Shasi Mitra [mailto:[email protected]]
> Sent: Wednesday, May 09, 2012 1:36 PM
> To: MyFaces Discussion
> Subject: Re: commandlink not working in panelgrid
>
> After u click the link also the expression in the rendered attribute is
> evaluated. That time it should be returning Faldo and hence ur action isn't
> being fired. If u remove all the rendered attributes or keep ur bean in
> session scope, it should work. Try printing the expression u gave in the
> rendered attribute and check.
>
> Sent from my iPhone
>
> On May 9, 2012, at 11:59 PM, Lim Hock-Chai <[email protected]>
> wrote:
>
> > I tried both session and request scopes.  Both failed to work.  The
> thing is that the commandlink is showing on the page, which would mean that
> the rendered condition in the panelGroup or panelgrid is ok.  It just that
> when I click on the link that is inside the panelgroup/panelgrid, it does
> not work.  I even tried not using any rendered condition on the
> panelGroup/panelGrid, the link still not working.  Oddest thing.
> >
> >
> >
> > -----Original Message-----
> > From: Shasi Mitra [mailto:[email protected]]
> > Sent: Wednesday, May 09, 2012 1:12 PM
> > To: MyFaces Discussion
> > Subject: Re: commandlink not working in panelgrid
> >
> > Are u sure ur bean is in session scope? Befor the action event is fired,
> it's verified whether the grid is rendered or not. So if the bean is in
> request scope, it returns False and therefore the link's action isn't fired.
> >
> > Sent from my iPhone
> >
> > On May 9, 2012, at 9:57 PM, Lim Hock-Chai <[email protected]>
> wrote:
> >
> >> I'm currently using myfaces 1.1.9 for my web app.  I'm having some
> problems with commandlink not working correctly for me.  It appears that
> when commandlink is inside of the panelgrid, it is not calling the method
> specified in the action attr.  But it works fine if I put it outside of the
> panelgrid.  Strange part is that I've had other jsp that have commandlink
> inside datatable and they work fine also.  This is the first time I use it
> inside a panelgrid.
> >>
> >> See code below.  The first commandlink is, which is not inside of
> panelgrid, works fine.  The 2nd commandlink is inside of panelgrid and it
> is not working (not calling back-end bean method)
> >>
> >> <jsp:root version="2.0"
> >>   xmlns:jsp="http://java.sun.com/JSP/Page";
> >>    xmlns:c="http://java.sun.com/jsp/jstl/core";
> >>    xmlns:f="http://java.sun.com/jsf/core";
> >>    xmlns:h="http://java.sun.com/jsf/html";
> >>    xmlns:t="http://myfaces.apache.org/tomahawk";
> >>    xmlns:a4j="http://richfaces.org/a4j";>
> >>
> >> <f:subview>
> >>   <f:loadBundle var="resources"
> basename="com.arch.myaccount.jsf.Resources"/>
> >>   <h:form id="MSAMHeaderOtherForm">
> >>
> >>       <!-- commandlink below works fine -->
> >>       <h:outputText value="|"/>
> >>       <h:commandLink  immediate="true" style="CURSOR: pointer"
>  action="#{commonTaskBean.fromMSAMBackToMyAccount}" >
> >>           <h:outputText value="My Account"/>
> >>       </h:commandLink>
> >>       <h:outputText value="|"/>
> >>
> >>       <!-- commandlink below does not work -->
> >>       <h:panelGroup
> >>               rendered="#{not empty sessionScope.MyAccountLoginType and
> >>
> sessionScope.MyAccountLoginType==resources.LOGIN_TYPE_MY_ACCOUNT }">
> >>           <h:outputText value=" "/>
> >>           <h:outputText value="|"/>
> >>           <h:commandLink  immediate="true" style="CURSOR: pointer"
>  action="#{commonTaskBean.fromMSAMBackToMyAccount}">
> >>               <h:outputText value="My Account"/>
> >>           </h:commandLink>
> >>           <h:outputText value="|"/>
> >>       </h:panelGroup>
> >>   </h:form>
> >> </f:subview>
> >> </jsp:root>
>

Reply via email to