It'd obviously be very helpful to have a more specific exception message...it was so obvious I looked right over it (and I'm still getting familiar w/ models.)
What I had done is copied some code where I was using a detachable model...and just changed it to a regular model...that's where load() came from... On 4/12/06, Gwyn Evans <[EMAIL PROTECTED]> wrote: > The current equivalent is line 305, i.e. > > protected void onComponentTagBody(final MarkupStream markupStream, > final ComponentTag openTag) > { > List choices = getChoices(); > final AppendingStringBuffer buffer = new > AppendingStringBuffer((choices.size() * 50) + 16); > > getChoices() is returning null there, as the model is empty and the > choices.size() causes the NPE. > > Leaving aside the use of 'magic' numbers, should we do something > explict there, i.e. log something & then use Collections.EMPTY_LIST, > or even throw a NPE with an explicit message? > > /Gwyn > > > On 12/04/06, Johan Compagner <[EMAIL PROTECTED]> wrote: > > if you change that strange load method to what i and gwyn are saying does it > > work then > > what wicket version are you using because if i look at 290 of AbstractChoice > > it is nothing. > > > > > > > > On 4/12/06, Vincent Jenks <[EMAIL PROTECTED]> wrote: > > > OK, I did this exactly how you showed me here...and I'm still getting the > > error. > > > > > > Here's my model: > > > > > > IModel dropDownModel = new Model() > > > { > > > protected Object load() > > > { > > > return new > > > ArrayList<String>(StringValues.getUSAStates().keySet()); //via proxy > > > } > > > }; > > > > > > Here's my dropdown: > > > > > > add(new DropDownChoice("billingState", > > dropDownModel, new IChoiceRenderer() > > > { > > > public String > > getDisplayValue(Object object) > > > { > > > return > > StringValues.getUSAStates().get(object); > > > } > > > > > > public String > > getIdValue(Object object, int index) > > > { > > > return > > object.toString(); > > > } > > > })); > > > > > > Here's the exception: > > > > > > 13:00:19,000 ERROR [RequestCycle] Unexpected runtime exception [page = > > > [Page class = com.myapp.ui.AddressInfo, id = 3]] > > > java.lang.NullPointerException > > > at > > wicket.markup.html.form.AbstractChoice.onComponentTagBody(AbstractChoice.java:290) > > > at wicket.Component.renderComponent > > (Component.java:1888) > > > at > > wicket.markup.html.WebMarkupContainer.onRender(WebMarkupContainer.java:77) > > > at wicket.Component.render(Component.java:1163) > > > at > > wicket.MarkupContainer.renderNext(MarkupContainer.java > > :1136) > > > at > > wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:811) > > > at > > wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:753) > > > at wicket.Component.renderComponent > > (Component.java:1888) > > > at > > wicket.markup.html.WebMarkupContainer.onRender(WebMarkupContainer.java:77) > > > at > > wicket.markup.html.form.Form.onRender(Form.java:517) > > > at wicket.Component.render(Component.java :1163) > > > at > > wicket.markup.html.BodyOnLoadContainer.resolve(BodyOnLoadContainer.java:106) > > > at > > wicket.MarkupContainer.renderNext(MarkupContainer.java:1159) > > > at wicket.MarkupContainer.renderComponentTagBody > > (MarkupContainer.java:811) > > > at > > wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:753) > > > at > > wicket.Component.renderComponent(Component.java:1888) > > > at wicket.markup.html.WebMarkupContainer.onRender > > (WebMarkupContainer.java:77) > > > at wicket.Component.render(Component.java:1163) > > > at wicket.MarkupContainer.autoAdd(MarkupContainer.java:170) > > > at > > wicket.markup.html.BodyOnLoadResolver.resolve(BodyOnLoadResolver.java > > :60) > > > at > > wicket.MarkupContainer.renderNext(MarkupContainer.java:1146) > > > at > > wicket.MarkupContainer.renderAll(MarkupContainer.java:779) > > > at wicket.Page.onRender(Page.java:788) > > > at wicket.Component.render (Component.java:1163) > > > at wicket.Page.doRender(Page.java:251) > > > at > > wicket.protocol.http.WebRequestCycle.redirectTo(WebRequestCycle.java:276) > > > at wicket.RequestCycle.respond(RequestCycle.java:934) > > > at wicket.RequestCycle.request(RequestCycle.java:411) > > > at > > wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:208) > > > at > > wicket.protocol.http.WicketServlet.doPost(WicketServlet.java:234) > > > .......... > > > > > > It's definitely the dropdown that is the culprit...when I remove it > > > from the page the > > > page renders just fine. > > > > > > Any ideas? > > > > > > On 4/10/06, Johan Compagner < [EMAIL PROTECTED]> wrote: > > > > ok then youre dropdown is wrong. > > > > > > > > IModel dropDownModel = new Model() > > > > { > > > > public Object getObject(final Component component) > > > > { > > > > return new > > > > ArrayList(StringValues.getUSAStates().keySet()); //via proxy > > > > } > > > > }; > > > > > > > > > > > > add(new DropDownChoice("billingState", dropDownModel, new > > IChoiceRenderer() > > > > { > > > > public String getDisplayValue(Object object) > > > > { > > > > > > > > return StringValues.getUSAStates().get(object); > > > > > > > > > > > > } > > > > > > > > public String getIdValue(Object object, int index) > > > > { > > > > return object.toString(); > > > > } > > > > })); > > > > > > > > I haven't seen many usecases for that because most of the time > > > > You have a List of States so getUSAStates doesn't return a map but > > directly > > > > a list. > > > > With State objects that has properties like: a key "AL" and as name > > > > "Alabama". > > > > > > > > That is the most used usecase i know of. > > > > > > > > johan > > > > > > > > > > > > > > > > On 4/11/06, Vincent Jenks <[EMAIL PROTECTED] > wrote: > > > > > > > > > > I'm sorry, I don't think I quite understand. > > > > > > > > > > I have dropDownModel which looks like this: > > > > > > > > > > > > > > > IModel dropDownModel = new Model() > > > > > { > > > > > protected Object load() > > > > > { > > > > > > > > > > return StringValues.getUSAStates(); //via proxy > > > > > } > > > > > }; > > > > > > > > > > StringValues.getUSAStates() looks something like this: > > > > > > > > > > public static Map<String, String> getUSAStates() > > > > > { > > > > > Map<String, String> states = new HashMap<String, String>(); > > > > > states.put("AL", "Alabama"); > > > > > states.put("AK", "Alaska"); > > > > > states.put("AZ", "Arizona"); > > > > > states.put("AR", "Arkansas"); > > > > > states.put("CA", "California"); > > > > > ...... > > > > > > > > > > Where "CA" is the key and "California" is the value...which is exactly > > how > > > > I'd like to see it in the select dropdown. > > > > > > > > > > Are you saying that I should split the keys and values into two > > different > > > > lists and look them up that way? > > > > > > > > > > It would be extremely useful, in my opinion, if Wicket had support for > > > > these types of objects internally, given the frequency of which they're > > > > used. It would be very intuitive if I could supply key/value Map > > objects > > > > into what is essentially a list of key/value pairs. > > > > > > > > > > Thanks again... > > > > > > > > > > > > > > > > > > > > On 4/10/06, Johan Compagner < [EMAIL PROTECTED]> wrote: > > > > > > > > > > > > give the choice renderen the complete hashmap > > > > > > > > > > > > And give the dropdown a model with the keys of that hashmap as a > > list. > > > > > > > > > > > > so if StringValues.getUSAStates (); are th ids in the hashmap then > > that > > > > should go ok. > > > > > > > > > > > > but youre choicerender is wrong: > > > > > > > > > > > > > > > > > > add(new DropDownChoice("billingState", dropDownModel, new > > > > IChoiceRenderer() > > > > > > { > > > > > > public String getDisplayValue(Object object) > > > > > > { > > > > > > > > > > > > return idValueHashmap.get(object); > > > > > > > > > > > > } > > > > > > > > > > > > public String getIdValue(Object object, int index) > > > > > > { > > > > > > return object.toString(); > > > > > > } > > > > > > })); > > > > > > > > > > > > > > > > > > > > > > > > On 4/11/06, Vincent Jenks < [EMAIL PROTECTED]> wrote: > > > > > > > > > > > > > > Is there an example of this somewhere? I'm struggling to get this > > > > working where I have a HashMap<String, String>...the first String is the > > ID > > > > and the second String is the value. > > > > > > > > > > > > > > I have this: > > > > > > > IModel dropDownModel = new Model() > > > > > > > { > > > > > > > protected Object load() > > > > > > > { > > > > > > > return StringValues.getUSAStates(); > > > > > > > } > > > > > > > }; > > > > > > > > > > > > > > add(new DropDownChoice("billingState", dropDownModel, > > new > > > > IChoiceRenderer() > > > > > > > { > > > > > > > public String getDisplayValue(Object object) > > > > > > > { > > > > > > > return object.toString(); > > > > > > > } > > > > > > > > > > > > > > public String getIdValue(Object object, int index) > > > > > > > { > > > > > > > return object.toString(); > > > > > > > } > > > > > > > })); > > > > > > > > > > > > > > I *just* wanted to see the page render...I know the values aren't > > > > right...but anything would have been acceptable. I keep getting a very > > > > unhelpful NullPointerException that I'm not even sure has anything to do > > w/ > > > > the dropdowns...but I assume it does since the rest of the form is very > > > > straightforward TextField components. > > > > > > > > > > > > > > I don't see where this is being done in wicket-examples....I'm > > using > > > > 1.1.1 > > > > > > > > > > > > > > Thanks! > > > > > > > > > > > > > > > > > > > > > > > > > > > > On 4/1/06, Johan Compagner < [EMAIL PROTECTED]> wrote: > > > > > > > > > > > > > > > > > > > > > > > there is no map support for this. > > > > > > > > > > > > > > > > What you could do is give the map to the ChoiceRenderer impl > > > > > > > > and give the keys of the map as a list to the Choice. > > > > > > > > > > > > > > > > > > > > > > > > johan > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On 3/31/06, Vincent Jenks < [EMAIL PROTECTED]> wrote: > > > > > > > > > > > > > > > > > > I'm trying to get a Map of data so I can have the key be the > > value > > > > of the dropdown options and the value of the Map item be the value of > > the > > > > option in the dropdown. Problem is, it doesn't look like DropDownChoice > > > > will accept a Map...unless I'm doing it wrong? > > > > > > > > > > > > > > > > > > Is a Map the best way to go? I was maybe considering using a > > > > single List collection and splitting a single string to get the two > > > > values....but that's pretty fugly too. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------- > > > This SF.Net email is sponsored by xPML, a groundbreaking scripting > > language > > > that extends applications into web and mobile media. Attend the live > > webcast > > > and join the prime developer group breaking into this new coding > > territory! > > > > > http://sel.as-us.falkag.net/sel?cmdlnk&kid0944&bid$1720&dat1642 > > > _______________________________________________ > > > Wicket-user mailing list > > > Wicket-user@lists.sourceforge.net > > > https://lists.sourceforge.net/lists/listinfo/wicket-user > > > > > > > > > > ------------------------------------------------------- > This SF.Net email is sponsored by xPML, a groundbreaking scripting language > that extends applications into web and mobile media. Attend the live webcast > and join the prime developer group breaking into this new coding territory! > http://sel.as-us.falkag.net/sel?cmdlnk&kid0944&bid$1720&dat1642 > _______________________________________________ > Wicket-user mailing list > Wicket-user@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wicket-user > ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid0944&bid$1720&dat1642 _______________________________________________ Wicket-user mailing list Wicket-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wicket-user