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> >

