Great - you're welcome :)

2010/5/18 Bruno Aranda <[email protected]>

> Oh yes, you are right. I simplified too much my original problem (I am not
> using requestScope in that one). Back to the drawing board hehe. Thanks
> Jakob :)
>
> I have updated the live code, and yes, it works perfectly as you say.
>
> Bruno
>
> On 18 May 2010 13:02, Jakob Korherr <[email protected]> wrote:
>
> > Hi Bruno,
> >
> > The problem in your counter sample is that you are setting the rendered
> > property in the requestScope. This means that the button will be rendered
> > for the ajax request executed by your "Show counter button"
> commandButton,
> > but afterwards (in any following request) its rendered property again is
> > false. Thus it will not be executed by any following request and this is
> > the
> > reason it doesn't work. However it is not removed from the HTML page,
> > because your ajax actions only render the counter.
> >
> > You can change this behavior by e.g. setting the rendered property in
> > sessionScope. Then it works perfectly - I just tried it myself!
> >
> > Regards,
> > Jakob
> >
> > 2010/5/18 Bruno Aranda <[email protected]>
> >
> > > Mmh, forget the sample code for the page... copy paste error, this is
> the
> > > one:
> > >
> > > ?xml version="1.0" encoding="ISO-8859-1" ?>
> > > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
> > >        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
> > > <html xmlns="http://www.w3.org/1999/xhtml";
> > >  xmlns:h="http://java.sun.com/jsf/html";
> > >  xmlns:f="http://java.sun.com/jsf/core";
> > >  xmlns:ui="http://java.sun.com/jsf/facelets";
> > >  xmlns:testComposite="http://java.sun.com/jsf/composite/testComposite";
> > >  >
> > > <h:head>
> > > </h:head>
> > > <h:body>
> > >    <h:outputStylesheet name="basic.css"/>
> > >     <h1>Counter example</h1>
> > >    <h:messages/>
> > >
> > >      <h:form prependId="false">
> > >
> > >            <h:outputText id="counter" value="Counter:
> > > #{counterBean.count}"/>
> > >
> > >            <hr/>
> > >
> > >            <h:commandButton value="Show counter button">
> > >                <f:ajax event="click" render="controlPanel"/>
> > >                <f:setPropertyActionListener value="#{true}"
> > > target="#{requestScope.renderPanel}"/>
> > >            </h:commandButton>
> > >
> > >            <h:panelGroup id="controlPanel">
> > >                <h:commandButton value="Increment"
> > > rendered="#{requestScope.renderPanel}"
> > >
> > actionListener="#{counterBean.increment}">
> > >                    <f:ajax event="click" render="counter"/>
> > >                </h:commandButton>
> > >                <h:commandButton value="Increment (Visible)"
> > >
> > actionListener="#{counterBean.increment}">
> > >                    <f:ajax event="click" render="counter"/>
> > >                </h:commandButton>
> > >            </h:panelGroup>
> > >
> > >        </h:form>
> > > </h:body>
> > > </html>
> > >
> > > Cheers,
> > >
> > > Bruno
> > >
> > > On 18 May 2010 12:00, Bruno Aranda <[email protected]> wrote:
> > >
> > > > Hi again,
> > > >
> > > > I have been trying to identify where my problem is. I have come with
> > this
> > > > little example. I have a counter that is incremented using a button.
> If
> > > the
> > > > button has been rendered by a PPR, the actionListener is not invoked,
> > > > whereas if the button was rendered from the start everything works
> > fine.
> > > >
> > > > You can see what I mean here (temporarely, I will stop the server at
> > some
> > > > point):
> > > >
> > > > http://elmoska.com:8080/test-webapp/ajaxAndListener.jsf
> > > >
> > > > This is the sample code:
> > > >
> > > > <?xml version="1.0" encoding="ISO-8859-1" ?>
> > > > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
> > > >         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
> > > > <html xmlns="http://www.w3.org/1999/xhtml";
> > > >  xmlns:h="http://java.sun.com/jsf/html";
> > > >  xmlns:f="http://java.sun.com/jsf/core";
> > > >  xmlns:ui="http://java.sun.com/jsf/facelets";
> > > >  xmlns:testComposite="
> http://java.sun.com/jsf/composite/testComposite";
> > > >  >
> > > > <h:head>
> > > > </h:head>
> > > > <h:body>
> > > >     <h:outputStylesheet name="basic.css"/>
> > > >     <h1>Myfaces Examples</h1>
> > > >     <h:messages/>
> > > >
> > > >     <h:form id="form">
> > > >         <testComposite:compositeCar car="#{carBean.cars[0]}"
> > > > owner="#{carBean.owner1}"/>
> > > >
> > > >     </h:form>
> > > > </h:body>
> > > > </html>
> > > >
> > > > And the backing bean:
> > > >
> > > > package org.apache.myfaces.counter;
> > > >
> > > > import javax.faces.bean.ManagedBean;
> > > > import javax.faces.bean.SessionScoped;
> > > > import javax.faces.event.ActionEvent;
> > > > import javax.faces.model.SelectItem;
> > > > import java.io.Serializable;
> > > > import java.util.ArrayList;
> > > > import java.util.List;
> > > >
> > > > @ManagedBean
> > > > @SessionScoped
> > > > public class CounterBean implements Serializable
> > > > {
> > > >     private int count;
> > > >
> > > >     public int getCount() {
> > > >         return count;
> > > >     }
> > > >
> > > >     public void setCount(int count) {
> > > >         this.count = count;
> > > >     }
> > > >
> > > >     public void increment(ActionEvent actionEvent) {
> > > >         count++;
> > > >     }
> > > > }
> > > >
> > > > Is this expected? I don't really know what is expected and what is
> > don't
> > > > these days :)
> > > >
> > > > Can provide a svn patch for the test-webapp sample project if
> needed...
> > > but
> > > > is basically adding the code above and registering the bean via
> > enabling
> > > the
> > > > scan context-param or adding it to the faces-config...
> > > >
> > > > Thanks,
> > > >
> > > > Bruno
> > > >
> > > >
> > > >
> > > > On 14 May 2010 18:13, Jakob Korherr <[email protected]> wrote:
> > > >
> > > >> You're welcome!
> > > >>
> > > >> OK, great. If you have a way to reproduce it, I can take a look at
> it.
> > > >>
> > > >> Regards,
> > > >> Jakob
> > > >>
> > > >> 2010/5/14 Bruno Aranda <[email protected]>
> > > >>
> > > >> > I guess that would work too for that example, but for some reason
> > > >> c:forEach
> > > >> > is not working for me at the moment (using JSP/EL 2.2). I will
> > > >> investigate
> > > >> > that later...
> > > >> >
> > > >> > Bruno
> > > >> >
> > > >> > On 13 May 2010 17:52, Mark Struberg <[email protected]> wrote:
> > > >> >
> > > >> > > Maybe I'm on the completely wrong track, but does it work with
> > > >> c:forEach?
> > > >> > >
> > > >> > > LieGrue,
> > > >> > > strub
> > > >> > >
> > > >> > > --- On Thu, 5/13/10, Jakob Korherr <[email protected]>
> > wrote:
> > > >> > >
> > > >> > > > From: Jakob Korherr <[email protected]>
> > > >> > > > Subject: Re: Problem with composite component inside ui:repeat
> > > >> > > > To: "MyFaces Discussion" <[email protected]>
> > > >> > > > Date: Thursday, May 13, 2010, 4:08 PM
> > > >> > > > Hi Bruno,
> > > >> > > >
> > > >> > > > This sounds like a bug. I will investigate it!
> > > >> > > >
> > > >> > > > Regards,
> > > >> > > > Jakob
> > > >> > > >
> > > >> > > > 2010/5/13 Bruno Aranda <[email protected]>
> > > >> > > >
> > > >> > > > > Hi,
> > > >> > > > >
> > > >> > > > > I am having some problems to understand this case:
> > > >> > > > >
> > > >> > > > > I have a composite component inside a ui:repeat.
> > > >> > > > Something like this:
> > > >> > > > >
> > > >> > > > >  <ui:repeat value="#{testController.objects}"
> > > >> > > > var="obj">
> > > >> > > > >
> > > >> > > >     <myComposite:myComp />
> > > >> > > > >  </ui:repeat>
> > > >> > > > >
> > > >> > > > > And the implementation of the component contains
> > > >> > > > this:
> > > >> > > > >
> > > >> > > > > <composite:implementation>
> > > >> > > > >    <h:commandButton value="Say something"
> > > >> > > > actionListener="#{cc.sayHello}">
> > > >> > > > > <composite:implementation>
> > > >> > > > >
> > > >> > > > > And I have the corresponding faces component with the
> > > >> > > > "sayHEllo"
> > > >> > > > > actionListener method.
> > > >> > > > >
> > > >> > > > > However, I get an exception saying that "cc.sayHello"
> > > >> > > > cannot be executed
> > > >> > > > > because "cc" is null for that request.
> > > >> > > > >
> > > >> > > > > Everything works as expected outside the ui:repeat, so
> > > >> > > > it seems that for
> > > >> > > > > some reason the "cc" is lost after the first request?
> > > >> > > > Or is this expected
> > > >> > > > > and I am doing something wrong?
> > > >> > > > >
> > > >> > > > > Thanks!
> > > >> > > > >
> > > >> > > > > Bruno
> > > >> > > > >
> > > >> > > >
> > > >> > > >
> > > >> > > >
> > > >> > > > --
> > > >> > > > Jakob Korherr
> > > >> > > >
> > > >> > > > blog: http://www.jakobk.com
> > > >> > > > twitter: http://twitter.com/jakobkorherr
> > > >> > > > work: http://www.irian.at
> > > >> > > >
> > > >> > >
> > > >> > >
> > > >> > >
> > > >> > >
> > > >> >
> > > >>
> > > >>
> > > >>
> > > >> --
> > > >> Jakob Korherr
> > > >>
> > > >> blog: http://www.jakobk.com
> > > >> twitter: http://twitter.com/jakobkorherr
> > > >> work: http://www.irian.at
> > > >>
> > > >
> > > >
> > >
> >
> >
> >
> > --
> > Jakob Korherr
> >
> > blog: http://www.jakobk.com
> > twitter: http://twitter.com/jakobkorherr
> > work: http://www.irian.at
> >
>



-- 
Jakob Korherr

blog: http://www.jakobk.com
twitter: http://twitter.com/jakobkorherr
work: http://www.irian.at

Reply via email to