>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 < gagui...@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 < > > gagui...@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