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>