Hi Martijn,
    Thanks for your suggestion,and I made a model for myself,but I
encountered another issue.
    So would you please tell me how can I  or which method can set the value
loaded from DB to the PropertySelection component while I could do nothing
for setting the value back to UI.

Regards,
Ryan.

2005/12/22, Martijn Hinten <[EMAIL PROTECTED]>:
>
> You will have to create yout own implementation of
> IPropertySelectionModel, of which several are available via the WIKI.
> Also see pages 141, 142 of Tapestry in Action.
>
> This is what I created myself and is working fine. The only
> bug/feature is that the value to which the PropertySelection
> component is bound *has* to be a String.
>
> The constructor of ValueLabelPropertySelectionModel accepts any List
> of Objects that either implement the IValueLabel interface (which
> should serve your needs) or are just plain Strings. In the latter
> case the value and label in the poplist will be the same.
>
> Good luck,
> Martijn
>
> public class ValueLabelPropertySelectionModel implements
>     IPropertySelectionModel {
>
>   /**
>    * The list of options held by this poplist<br/> Options can be: -
> Strings or
>    * objects that implement IValueLabel
>    *
>    */
>   List _options;
>
>   Map _optionsMap;
>
>
>   public ValueLabelPropertySelectionModel() {
>   }
>
>
>   public ValueLabelPropertySelectionModel(List l) {
>     set_options(l);
>     if( _options != null ) {
>       _optionsMap = new HashMap();
>       for( int i = 0; i < _options.size(); i++ ) {
>         Object option = _options.get(i);
>
>          if( option instanceof IValueLabel ) {
>           IValueLabel vl = (IValueLabel)_options.get(i);
>           // _optionsMap.put(vl.getValue(), vl.getLabel());
>           _optionsMap.put(vl.getValue(), vl);
>         } else {
>           _optionsMap.put(option.toString(), option.toString());
>         }
>       }
>     }
>   }
>
>
>   /**
>    * @see
> org.apache.tapestry.form.IPropertySelectionModel#getOptionCount()
>    */
>   public int getOptionCount() {
>     if( _options == null ) {
>       return 0;
>     } else {
>       return _options.size();
>     }
>   }
>
>
>   /**
>    * @see
> org.apache.tapestry.form.IPropertySelectionModel#getOption(int)
>    */
>   public Object getOption(int i) {
>     if( _options == null ) {
>       return null;
>     } else {
>       Object option = _options.get(i);
>       if( option instanceof IValueLabel ) {
>         return ((IValueLabel)option).getValue();
>         // return option;
>       } else {
>         return option;
>       }
>     }
>   }
>
>
>   /**
>    * @see
> org.apache.tapestry.form.IPropertySelectionModel#getLabel(int)
>    */
>   public String getLabel(int i) {
>     if( _options == null ) {
>       return null;
>     } else {
>       Object option = _options.get(i);
>       if( option instanceof IValueLabel ) {
>         return ((IValueLabel)option).getLabel();
>       } else {
>         return option.toString();
>       }
>     }
>
>   }
>
>
>   /**
>    * @see
> org.apache.tapestry.form.IPropertySelectionModel#getValue(int)
>    */
>   public String getValue(int i) {
>     if( _options == null ) {
>       return null;
>     } else {
>       Object option = _options.get(i);
>       if( option instanceof IValueLabel ) {
>         return ((IValueLabel)option).getValue();
>       } else {
>         return option.toString();
>       }
>     }
>
>   }
>
>
>   /**
>    * @see
> org.apache.tapestry.form.IPropertySelectionModel#translateValue(java.l
> ang.String)
>    */
>   public Object translateValue(String value) {
>     if( _options == null ) {
>       return null;
>     } else {
>       Object o = _optionsMap.get(value);
>       if( o instanceof IValueLabel ) {
>         return ((IValueLabel)o).getValue();
>       } else {
>         return _optionsMap.get(value);
>       }
>     }
>   }
>
>
>   /**
>    * @return Returns the _options.
>    */
>   public List get_options() {
>     return _options;
>   }
>
>
>   /**
>    * @param _options The _options to set.
>    */
>   public void set_options(List _options) {
>     this._options = _options;
>   }
>
>
> public interface IValueLabel {
>
>   public String getLabel();
>   public String getValue();
>
> }
>
>
> public class ValueLabel implements IValueLabel{
>
>   String label;
>   String value;
>
>   public ValueLabel(String l, String v){
>
>   setLabel(l);
>   setValue(v);
>
>   }
>
>   public void setLabel(String label) {
>     this.label = label;
>   }
>
>   public void setValue(String value) {
>     this.value = value;
>   }
>
>   public String getLabel() {
>
>     return label;
>   }
>
>   public String getValue() {
>
>     return value;
>   }
>
> }
>
>
> ---- Original Message ----
> From: [EMAIL PROTECTED]
> To: [email protected]
> Subject: RE: selection problem
> Date: Thu, 22 Dec 2005 18:33:11 +0800
>
> >Hi all,
> >    I have a issue about using PropertySelection component.
> >    So I wanna whether can PropertySelection seperate his list value
> >and
> >list key.Because I may need to display the value,while using the key
> >of  the
> >selection.
> >    So  is there any  one who know how to do?
> >
> >Thanks,
> >Ryan.
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

Reply via email to