Or you did not set the model on the dropdown.

Maurice

On Thu, Feb 21, 2008 at 8:44 PM, Maurice Marrink <[EMAIL PROTECTED]> wrote:
> Looks like at least one of the models in the session is not properly
>  initialized.
>  You have to do something like
>  private IModel model=new WhateverModel(null);
>  in your session.
>
>  Maurice
>
>
>
>  On Thu, Feb 21, 2008 at 8:41 PM, steviezz <[EMAIL PROTECTED]> wrote:
>  >
>  >  Now getting
>  >
>  >  RequestCycle.logRuntimeException(1399) | Attempt to set model object on 
> null
>  >  model of component: panelSearch:form:parentAreas
>  >  java.lang.IllegalStateException: Attempt to set model object on null model
>  >  of component: panelSearch:form:parentAreas
>  >         at org.apache.wicket.Component.setModelObject(Component.java:2850)
>  >
>  >
>  >
>  >
>  >
>  >
>  >  Mr Mean wrote:
>  >  >
>  >  > Don't add wicket components to the session, use models.
>  >  > for example
>  >  > class MySession extends WebSession
>  >  > {
>  >  >  private IModel dropdown1=new WhateverModel(null); //etc for the others
>  >  >  // add getters() for models
>  >  > }
>  >  >
>  >  > class PanelSearch extends Panel
>  >  > {
>  >  >  public PanelSearch(String id)
>  >  > {
>  >  >  super(id);
>  >  >  add(new
>  >  > 
> DropDownChoice("dropdown1",((MySession)Session.get()).getDropdown1(),myChoices)
>  >  > }
>  >  > }
>  >  >
>  >  > class SomePage extends WebPage
>  >  > {
>  >  >  public SomePage()
>  >  > {
>  >  >  super();
>  >  >  add(new PanelSearch("search"));
>  >  > }
>  >  > }
>  >  >
>  >  > The trick is always using the shared models in your session, that is
>  >  > why you don't need setters for them and you have to initialize them
>  >  > properly with some default.
>  >  > That way the form automatically writes the new values to your session
>  >  > and you don't have to do that manually.
>  >  >
>  >  > How much less code can you have?
>  >  >
>  >  > Maurice
>  >  >
>  >  > On Thu, Feb 21, 2008 at 1:44 PM, steviezz <[EMAIL PROTECTED]>
>  >  > wrote:
>  >  >>
>  >  >>  Thanks.
>  >  >>
>  >  >>  I have already moved to using the session for storage.  I've tried 
> just
>  >  >>  adding the complete search panel object to the session in the search
>  >  >>  onsubmit() and fetching it again to add to the results page - this 
> works
>  >  >> and
>  >  >>  avoids some of my page reload and history issues (but adds a few
>  >  >> others),
>  >  >>  but I presume its not really a good idea to store large object graphs 
> in
>  >  >> the
>  >  >>  session - maybe better to just store the selected values and rebuild 
> the
>  >  >>  selection dropdowns as required.  Plus, this will probably help me 
> iron
>  >  >> out
>  >  >>  my inconsistent dropdown state problems.
>  >  >>
>  >  >>  But I'm still searching for a magic solution that does not involve
>  >  >> writing
>  >  >>  too much code :-}
>  >  >>
>  >  >>
>  >  >>
>  >  >>
>  >  >>
>  >  >>  Mr Mean wrote:
>  >  >>  >
>  >  >>  > I would not recommend what you are doing here.
>  >  >>  > What happens is that wicket removes the panel from the original page
>  >  >>  > and attaches it to the new page, making it impossible to use the
>  >  >>  > backbutton (because wicket will complain about a missing component).
>  >  >>  > Also this only works if the html of the new page uses the same
>  >  >>  > component id.
>  >  >>  >
>  >  >>  > It is better to store the selection for your dropdowns in the 
> session
>  >  >>  > (as suggested before).
>  >  >>  > Then in the constructor of your PanelSearch you can check if the
>  >  >>  > session contains a value for the dropdowns and if that is the case 
> set
>  >  >>  > it as the model for the dropdown. That way you don't have to pass 
> the
>  >  >>  > state to every page.
>  >  >>  >
>  >  >>  > Maurice
>  >  >>  >
>  >  >>  > On Thu, Feb 21, 2008 at 11:35 AM, steviezz <[EMAIL PROTECTED]>
>  >  >>  > wrote:
>  >  >>  >>
>  >  >>  >>  Answering my own questions.
>  >  >>  >>
>  >  >>  >>  I can also pass the search panel to the results page from my form
>  >  >>  >> onSubmit:
>  >  >>  >>
>  >  >>  >>         setResponsePage(new
>  >  >>  >> SearchResults(((PanelSearch)this.getParent()),
>  >  >>  >>  search));
>  >  >>  >>
>  >  >>  >>  Then, in the results page:
>  >  >>  >>
>  >  >>  >>        public SearchResults(PanelSearch searchPanel, Search 
> search) {
>  >  >>  >>                 add(searchPanel);
>  >  >>  >>         }
>  >  >>  >>
>  >  >>  >>  Mostly seems to work OK - panel on results page retains state from
>  >  >>  >> search
>  >  >>  >>  page.
>  >  >>  >>
>  >  >>  >>  Still getting some weird behaviour with the Ajax dropdowns on page
>  >  >>  >> refreshes
>  >  >>  >>  - can get crazy state of North America, Canada, Kansas if I 
> refresh
>  >  >> the
>  >  >>  >> page
>  >  >>  >>  between selection changes (old state gets mixed in with partial 
> new
>  >  >>  >> state)
>  >  >>  >>
>  >  >>  >>  Other thing to sort is how to reload panel state if user goes back
>  >  >> to
>  >  >>  >> the
>  >  >>  >>  home page (containing search panel) via a basic external 
> navigation
>  >  >> link
>  >  >>  >> -
>  >  >>  >>  panel will be in its initial blank state.  Perhaps I do need to 
> look
>  >  >>  >> into
>  >  >>  >>  loading from the session for this.
>  >  >>  >>
>  >  >>  >>  But I'm starting to like Wicket - this kind of stuff takes much 
> more
>  >  >>  >> code in
>  >  >>  >>  other frameworks.
>  >  >>  >>
>  >  >>  >>
>  >  >>  >>
>  >  >>  >>
>  >  >>  >>  steviezz wrote:
>  >  >>  >>  >
>  >  >>  >>  > I am now passing the search form model to the new page in the
>  >  >>  >> constructor,
>  >  >>  >>  >
>  >  >>  >>  >   setResponsePage(new SearchResults(search));
>  >  >>  >>  >
>  >  >>  >>  > Works OK - I assume this is better than going through the 
> session.
>  >  >>  >>  >
>  >  >>  >>  > But I have no idea (yet) how to reinitialise the search panel 
> Ajax
>  >  >>  >>  > widgets.
>  >  >>  >>  >
>  >  >>  >>  >
>  >  >>  >>  >
>  >  >>  >>  >
>  >  >>  >>  > wicket user-2 wrote:
>  >  >>  >>  >>
>  >  >>  >>  >> store the backing model in the session and get it from the
>  >  >> session,
>  >  >>  >> this
>  >  >>  >>  >> will help you retain the state in all the cases
>  >  >>  >>  >>
>  >  >>  >>  >> Cheers
>  >  >>  >>  >> Dipu
>  >  >>  >>  >>
>  >  >>  >>  >>
>  >  >>  >>  >>
>  >  >>  >>  >
>  >  >>  >>  >
>  >  >>  >>
>  >  >>  >>  --
>  >  >>  >>  View this message in context:
>  >  >>  >>
>  >  >> 
> http://www.nabble.com/Combining-Ajax-and-non-Ajax-pages-tp15587166p15607263.html
>  >  >>  >>
>  >  >>  >>
>  >  >>  >> Sent from the Wicket - User mailing list archive at Nabble.com.
>  >  >>  >>
>  >  >>  >>
>  >  >>  >>
>  >  >> ---------------------------------------------------------------------
>  >  >>  >>  To unsubscribe, e-mail: [EMAIL PROTECTED]
>  >  >>  >>  For additional commands, e-mail: [EMAIL PROTECTED]
>  >  >>  >>
>  >  >>  >>
>  >  >>  >
>  >  >>  > 
> ---------------------------------------------------------------------
>  >  >>  > To unsubscribe, e-mail: [EMAIL PROTECTED]
>  >  >>  > For additional commands, e-mail: [EMAIL PROTECTED]
>  >  >>  >
>  >  >>  >
>  >  >>  >
>  >  >>
>  >  >>  --
>  >  >>  View this message in context:
>  >  >> 
> http://www.nabble.com/Combining-Ajax-and-non-Ajax-pages-tp15587166p15610292.html
>  >  >>
>  >  >>
>  >  >> Sent from the Wicket - User mailing list archive at Nabble.com.
>  >  >>
>  >  >>
>  >  >>  ---------------------------------------------------------------------
>  >  >>  To unsubscribe, e-mail: [EMAIL PROTECTED]
>  >  >>  For additional commands, e-mail: [EMAIL PROTECTED]
>  >  >>
>  >  >>
>  >  >
>  >  > ---------------------------------------------------------------------
>  >  > To unsubscribe, e-mail: [EMAIL PROTECTED]
>  >  > For additional commands, e-mail: [EMAIL PROTECTED]
>  >  >
>  >  >
>  >  >
>  >
>  >  --
>  >  View this message in context: 
> http://www.nabble.com/Combining-Ajax-and-non-Ajax-pages-tp15587166p15618707.html
>  >
>  >
>  > Sent from the Wicket - User mailing list archive at Nabble.com.
>  >
>  >
>  >  ---------------------------------------------------------------------
>  >  To unsubscribe, e-mail: [EMAIL PROTECTED]
>  >  For additional commands, e-mail: [EMAIL PROTECTED]
>  >
>  >
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to