Thank you very much. Your explanation cleared things up for me and solved my
problem.

Peter



Johan Compagner wrote:
> 
> to quickly do it right in your example:
> 
> you should do it in reverse.
> 
> so this:
> 
>  for(;i<ids.length;i++)
>               choices.add(values[i]);
> 
> should be
> 
>  for(;i<ids.length;i++)
>               choices.add(ids[i]);
> 
> 
> so the id's are the valules/choices not the display values. Thats done in
> the choicerenderer:
> 
>    public Object getDisplayValue(Object obj) {
>             // obj == id, lookup id in id array then return value out of
> value array.
>         }
> 
>         public String getIdValue(Object obj, int i) {
>               return obj; // obj == the id
>         }
> 
> 
> hopefully this will make it also more clear to other people, because this
> question does popup again and again. :(
> To many people come from the Swing world, with its Cell renderers :(
> 
> johan
> 
> 
> 
>> public class DateDropDownChoice extends DropDownChoice implements
>> Serializable {
>>     // values to go into the hidden value attribute in the HTML option
>> tag
>>     // AND to go into the model/database
>>     final static private String[] ids =
>> {"20031","20032","20033","20034","20041",…};
>>
>>     // values to be displayed in the dropdown
>>     final static private String[] values ={"2003, Fall","2003,
>> Winter","2003, Spring","2003, Summer","2004, Fall",…};
>>
>>     public DateDropDownChoice(String id, IModel iModel) {
>>         super(id, iModel);
>>         ArrayList choices = new ArrayList();
>>
>>         int i = 0;
>>         for(;i<ids.length;i++)
>>            // choices.add(new DateChoice(ids[i],values[i]));
>>               choices.add(values[i]);
>>
>>         this.setChoices(choices);
>>         this.setChoiceRenderer(new CustomChoiceRenderer());
>>     }
>>
>>
>>
>>     class CustomChoiceRenderer implements IChoiceRenderer{
>>
>>
>>         public Object getDisplayValue(Object obj) {
>>             return obj.toString();
>>         }
>>
>>         public String getIdValue(Object obj, int i) {
>>
>>             /**
>>              * An "i" of -1 is passed when a previous selection
>>              * has been made and is stored, so just return the obj string
>> value
>>              * because it is a properly stored value such as "20063" from
>> the previous submission
>>              *
>>              * An "i" > 0 means that I need to look up the
>> appropriate/corresponding
>>              * value from the ids array.
>>              *
>>              */
>>
>>             String returnVal = i<0?obj.toString():ids[i];
>>             System.out.println("returnVal: "+returnVal+" :: ID:: "+i);
>>             return returnVal;
>>         }
>>     }
>> }
>>
>>
>>
> 
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share
> your
> opinions on IT & business topics through brief surveys - and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________
> Wicket-user mailing list
> Wicket-user@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wicket-user
> 
> 

-- 
View this message in context: 
http://www.nabble.com/DropDownChoice-inconsistent-value-returned-tf2971300.html#a8374726
Sent from the Wicket - User mailing list archive at Nabble.com.


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to