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