wicket-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Pedro Santos <pedros...@gmail.com>
Subject Re: Dynamic Rendering and Common Paramenters
Date Tue, 03 Nov 2009 12:09:46 GMT
 >I should build the form inside a component instead the page. And I
>should keep a reference
>to the dynamic model inside this component.
Not what I try to mean.

your report:
>But as I have to build the form I do not have a dynamic model on page.
You can have your model, and you can have your component build logic.

you report:

>So no matter what's the value it will get not updated to
>the new one.
so i think you are working on diferent answer instances
can you send some buildForm(answer) lines?

On Tue, Nov 3, 2009 at 9:22 AM, Gonzalo Aguilar Delgado <
gaguilar@aguilardelgado.com> wrote:

> Let me see if I understand what you say.
>
> I should build the form inside a component instead the page. And I
> should keep a reference
> to the dynamic model inside this component.
>
> This makes sense for me but I find one problem. Where do I read the
> renderer parameter?
>
> Because this code gets executed in the main page.
>
> ---------------------------- CODE ----------------------------
>  // Get render parameter
>                String value =
>
> ((PortletRequestContext)RequestContext.get()).getPortletRequest().getParameter("crmportal:userId");
>
> --------------------------------------------------------------
>
>
> I can do it in submit but then I should be able to communicate it to the
> new component and
> make it render again.
>
> Is there a common way to do this in wicket?
>
>
> Thank you
>
>
>
> El mar, 03-11-2009 a las 08:00 -0200, Pedro Santos escribió:
>
> > > But when I submit the form the constructer gets not called anymore.
> > this is an expected behavior, an component instance is held on pagemap
> > between requests.
> >
> > > But as I have to build the form I do not have a dynamic model on page.
> > Can't you manage an instance of an dynamic model on your component,
> > independent of your form build logic? You can. Figure out the best way to
> > your component. You can simple keep this model on an instance variable
> for
> > example.
> >
> > On Tue, Nov 3, 2009 at 7:22 AM, Gonzalo Aguilar Delgado <
> > gaguilar@aguilardelgado.com> wrote:
> >
> > > Hello Again!
> > >
> > > I have a form that I build dynamically based on a render parameter
> > > value. I'm using
> > > http://cwiki.apache.org/WICKET/forms-with-dynamic-elements.html
> > >
> > >
> > > I use the constructor:
> > >
> > > /**
> > >         * Constructor
> > >         */
> > >        public ViewModePage()
> > >        {
> > >
> > >        ...
> > >
> > >                // Get render parameter
> > >                String value =
> > >
> > >
> ((PortletRequestContext)RequestContext.get()).getPortletRequest().getParameter("crmportal:userId");
> > >        ...
> > >                // Check for a valid answer from this customer
> > >                if(value!=null && value.length()>0)
> > >                {
> > >                        log.debug("Value length: " + value.length());
> > >                        User user =
> > > userDAOBean.find(UuidUserType.fromString(value));
> > >
> > >                        if(user!=null)
> > >                        {
> > >                                answer = getLastAnswer(1,user);
> > >                                if(answer!=null)
> > >                                {
> > >                                        buildForm(answer);
> > >
>  surveySubmitButton.setEnabled(true);
> > >                                }
> > >                        }
> > >                }
> > >        ...
> > >
> > >        }
> > >
> > >
> ------------------------------------------------------------------------------------
> > >
> > > buildForm(answer); gets the form build based on the user answer
> > >
> > > The problem as you can figure out. It works as I do nothing with the
> > > form... But when I submit the form the constructer gets not
> > > called anymore. So no matter what's the value it will get not updated
> to
> > > the new one.
> > >
> > > The GREAT book "wicket in action" explained this issue well. You have
> to
> > > use dynamic models:
> > >
> > >
> > > ---------------------------- CODE ----------------------------------
> > >    In chapter 4, we’ll discuss the differences between static models
> > > and dynamic mod-
> > > els (the issue at hand) in greater depth. For now, we’ll solve the
> > > problem by providing
> > > the label with a model that calculates its value every time it’s
> > > requested:
> > >
> > > add(new Label("total", new Model() {
> > >     @Override
> > >    public Object getObject() {
> > >         NumberFormat nf = NumberFormat.getCurrencyInstance();
> > >         return nf.format(getCart().getTotal());
> > >     }
> > > }));
> > >
> > > -------------------WICKET IN ACTION ----------------------------
> > >
> > >
> > > But as I have to build the form I do not have a dynamic model on page.
> > > So how do I make the form gets updated each time
> > > the page it's rendered without disturbing Wicket normal behaviour?
> > >
> > > Do I explain myself?
> > >
> > > Thank you all in advance.
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> >
> >
>



-- 
Pedro Henrique Oliveira dos Santos

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message