You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Christopher Dodunski <Ch...@christopher.net.nz> on 2018/01/24 00:19:18 UTC

Tapestry SelectModel

Hi team,

Just a quick question: When using Tapestry's SelectModel to create a drop
down list of String options, is it possible to enforce this at the 'model'
tier through the use of an annotation?

With Java enumerations this is possible:

    @Enumerated(EnumType.STRING)
    private String country;

The Tapestry 'Hotel' demo app introduces an alternative to plain
enumerations: (Abstract)SelectModel.  But I notice that it is only 'wired
up' at the 'view' tier:

    <select t:type="select" t:id="roomPreference" t:value="booking.beds"
t:model="bedType">
    </select>

Without the SelectModel being 'wired' to the model tier (an entity), it
would mean BeanEditForm would allow the user to type directly into a
String field.  Ideally, I'd like this also to be a drop down selection.

Thanks for any suggestions,

Chris.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Tapestry SelectModel

Posted by "Thiago H. de Paula Figueiredo" <th...@gmail.com>.
Hello!

IMHO, if you don't want arbitrary strings in a field, you should create an
enum for that (in this case, Country) and use it as the type of your field
instead of String. Tapestry should automatically use a <select> for editing
that.

But, even leaving your code the way it is, and I strongly recommend you
don't, you can contribute a DataTypeAnalyzer implementation to the
DataTypeAnalyzeer so you tell Tapestry which Tapestry type (which is just a
name in a String) your property should have. After that, you'll contribute
an edition block to
The other step would be contributing an edition block to BeanBlockSource.
Then, when using BeanEditor or BeanEditForm, Tapestry will use that block
to render the HTML form field for your field/property.

Or, inside your BeanEditForm or BeanEditor, just use a <p:country> block to
manually create the template that will edit your field.

On Tue, Jan 23, 2018 at 10:19 PM, Christopher Dodunski <
ChrisFromTapestry@christopher.net.nz> wrote:

> Hi team,
>
> Just a quick question: When using Tapestry's SelectModel to create a drop
> down list of String options, is it possible to enforce this at the 'model'
> tier through the use of an annotation?
>
> With Java enumerations this is possible:
>
>     @Enumerated(EnumType.STRING)
>     private String country;
>
> The Tapestry 'Hotel' demo app introduces an alternative to plain
> enumerations: (Abstract)SelectModel.  But I notice that it is only 'wired
> up' at the 'view' tier:
>
>     <select t:type="select" t:id="roomPreference" t:value="booking.beds"
> t:model="bedType">
>     </select>
>
> Without the SelectModel being 'wired' to the model tier (an entity), it
> would mean BeanEditForm would allow the user to type directly into a
> String field.  Ideally, I'd like this also to be a drop down selection.
>
> Thanks for any suggestions,
>
> Chris.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>


-- 
Thiago