Re: [Wicket-user] bind Map to DropDownChoice
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 ArrayListString(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
Re: [Wicket-user] bind Map to DropDownChoice
On 12/04/06, Vincent Jenks [EMAIL PROTECTED] wrote: OK, I did this exactly how you showed me here... No you didn't - In your model you've got protected Object load() from somewhere, whereas what Johan said was public Object getObject(final Component component) /Gwyn and I'm still getting the error. Here's my model: IModel dropDownModel = new Model() { protected Object load() { return new ArrayListString(StringValues.getUSAStates().keySet()); //via proxy } }; --- 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=lnkkid0944bid$1720dat1642 ___ Wicket-user mailing list Wicket-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wicket-user
Re: [Wicket-user] bind Map to DropDownChoice
if you change that strange load method to what i and gwyn are saying does it work thenwhat 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 newArrayListString(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.NullPointerExceptionat 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 itfrom the page thepage 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. johanOn 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 MapString, String getUSAStates() { MapString, String states = new HashMapString, 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
Re: [Wicket-user] bind Map to DropDownChoice
Good God...I don't believe I missed that! Ok, this never happened...and thanks! BTW - I'm using Wicket 1.1.1 On 4/12/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 ArrayListString(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
Re: [Wicket-user] bind Map to DropDownChoice
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 ArrayListString(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
Re: [Wicket-user] bind Map to DropDownChoice
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 ArrayListString(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
Re: [Wicket-user] bind Map to DropDownChoice
Is there an example of this somewhere? I'm struggling to get this working where I have a HashMapString, 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-examplesI'm using 1.1.1Thanks!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 impland 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 valuesbut that's pretty fugly too.
Re: [Wicket-user] bind Map to DropDownChoice
give the choice renderen the complete hashmapAnd 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 HashMapString, 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-examplesI'm using 1.1.1Thanks!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 impland 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 valuesbut that's pretty fugly too.
Re: [Wicket-user] bind Map to DropDownChoice
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 MapString, String getUSAStates() { MapString, String states = new HashMapString, 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 hashmapAnd 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 HashMapString, 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-examplesI'm using 1.1.1Thanks!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 impland 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 valuesbut that's pretty fugly too.
Re: [Wicket-user] bind Map to DropDownChoice
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 timeYou 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 MapString, String getUSAStates() { MapString, String states = new HashMapString, 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 hashmapAnd 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 HashMapString, 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-examplesI'm using 1.1.1Thanks!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 impland 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 valuesbut that's pretty fugly too.
Re: [Wicket-user] bind Map to DropDownChoice
there is no map support for this.What you could do is give the map to the ChoiceRenderer impland give the keys of the map as a list to the Choice.johanOn 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 valuesbut that's pretty fugly too.
Re: [Wicket-user] bind Map to DropDownChoice
I see. I just went w/ a List and changed the value when I created the list. The dropdown was a list of dates so I just formatted the date differently for the view portion of the list.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 impland give the keys of the map as a list to the Choice. johanOn 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 valuesbut that's pretty fugly too.