Hi,

 I use a custom select model based on an AbstractSelectModel
and using a custom ValueEncoder. When running the code I get
this here generated (newlines added by me *g*):

| <select id="salution" name="salution" tabindex="10">
| <option foo="bar" selected="selected" value="null">bitte wählen...<
|  option disabled="disabled" selected="selected" value="null">---------------<
|  option value="MR">Herr<
|  option value="MRS">Frau
| </select><
|  img alt="[Error]" class="t-error-icon t-invisible" id="salution:icon"
|  src="/my-application-foo/assets/tapestry/field-error-marker.png">

As you see the first two options have the attribute "selected"
which is of course not what I want.

Now I wonder is this a bug or a feature (i.e. my bug *g*)?

Cheers,

Martin

<-------------- snip / my code ---------------->

The relevant snippet from the template looks like this:

| <select name="salutation" id="salutation" tabindex="10"
|         t:type="select"
|         t:id="salution"
|         t:encoder="salutationValueEncoder"
|         t:model="salutationModel"
|         t:value="contact.salutation">
|     <option selected="selected">bitte wählen...</option>
|     <option disabled="disabled">---------------</option>
|     <option>Herr</option>
|     <option>Frau</option>
| </select>

This is the selectmodel:

| public final class SalutationSelectModel extends AbstractSelectModel {
|     
|   private final Messages _msgs;
| 
|   public SalutationSelectModel( final Messages msgs ) {
|     _msgs = msgs;
|   }
| 
|   public List<OptionGroupModel> getOptionGroups() {
|     return null;
|   }
| 
|   public List<OptionModel> getOptions() {
|     final List<OptionModel> result = new ArrayList<OptionModel>();
|     result.add( new OptionModelImpl( _msgs.get( "select_pleaseSelect" ),
|         false, null, new String[0] ) );
|     result.add( new OptionModelImpl( _msgs.get( "select_separator" ),
|         true, null, new String[0] ) );
|     for( Salutation salut : Salutation.values() ) {
|       result.add( new OptionModelImpl( _msgs.get( "salutation_" + 
salut.name() ),
|           false, salut, new String[0] ) );
|     }
|     
|     return result;
|   }
| 
| }

And (if at all relevant) the valueencoder:

| public class SalutationValueEncoder implements ValueEncoder<Salutation> {
|
|   public String toClient( Salutation value ) {
|     if ( value == null )
|       return "null";
|     return value.name();
|   }
| 
|   public Salutation toValue( String clientValue ) {
|     if ( "null".equals( clientValue ) )
|       return null;
|     return Salutation.valueOf( clientValue );
|   }
| 
| }


-- 
------------- / http://herbert.the-little-red-haired-girl.org / -------------
=+= 
Was ist ein Cluster?
Wenn vier Bratscher unisono spielen.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to