Hello all,
I'm using a slighty different alternative.
I added the method getLabel to my Enum, which returns the key of the
property for that value of Enum.
My page contains a the following scrap:
<h:selectOneRadio
layout="pageDirection"
value="#{createRequestBean.category}">
<t:selectItems
value="#{createRequestBean.availableCategories}"
var="category"
itemLabel="#{labels[category.label]}"
itemValue="#{category}" />
</h:selectOneRadio>
In my managed-bean I just return a List<Enum> with all values from my
Enum like this:
/**
* Gets the available categories.
*
* @return An array with all the available categories.
*/
public List<Category> getAvailableCategories() {
Category[] categories = Category.values();
return Arrays.asList(categories);
}
Combined with a generic converter for Enums and a getter and setter for
the Enum on my managed-bean it works like a charm for me.
With kind regards,
Marco Beelen
-----Original Message-----
From: Erlend Hamnaberg [mailto:[EMAIL PROTECTED]
Sent: dinsdag 22 mei 2007 20:17
To: MyFaces Discussion
Subject: Re: enumerated type and f:selectItems
Here is a custom localized selectItem creator from enums.
Assumes you have a resource bundle configured in faces config.
It also expects values for each Enum Value.
If you have this enum:
package com.exampe;
public enum Example {
EXAMPLE
}
Then the appropriate entry in the message bundle would be:
com.example.Example.EXAMPLE=example
public static List<SelectItem>
createSelectItemsFromEnum(FacesContext context, Class<? extends Enum>
value) {
List<SelectItem> list = new ArrayList<SelectItem>();
Application a = context.getApplication();
String msgBundle = a.getMessageBundle();
Locale locale = context.getViewRoot().getLocale();
ResourceBundle rb = ResourceBundle.getBundle(msgBundle, locale);
Set<? extends Enum> set = EnumSet.allOf(value);
if (set != null && set.size() > 0) {
for (Enum e : set) {
String name = value.getName() + "." + e.name();
list.add(new SelectItem(e, rb.getString(name)));
}
}
return list;
}
I have also a Converter that uses the same method from and to Enums if
you'd like that. That is needed if you use standard components.
- Erlend
Cagatay Civici wrote:
> Hi,
>
> Sandbox15 has an enumconverter too.
>
>
http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox15/core/src/m
ain/java/org/apache/myfaces/custom/converter/enumeration/EnumConverter.j
ava?view=markup
>
> Cagatay
>
> On 5/22/07, *Andrew Robinson* <[EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]>> wrote:
>
> If you use jboss seam there is support for an enum converter and
> enum-select item components that do just what you are looking for.
>
> On 5/22/07, [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
> < [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote:
> >
> > Hi,
> >
> > What's the best way generate UISelectItems from an enumerated
> type? I'd like
> > to populate a UISelectOne-based component with enumerated type
> values and
> > back the component with an enumerated type variable instance.
> This seems
> > like it should be a common pattern in JSF with JDK 1.5+. In
> fact, I'm a
> > little surprised we can't specify an enumerated type (or
> variable of an
> > enumerated type) for f:selectItems.
> >
> > Thanks for any replies,
> > Eric
> >
> > _________________________
> >
> > CONFIDENTIALITY NOTICE
> >
> > The information contained in this e-mail message is intended
> only for the
> > exclusive use of the individual or entity named above and may
> contain
> > information that is privileged, confidential or exempt from
> disclosure under
> > applicable law. If the reader of this message is not the
> intended recipient,
> > or the employee or agent responsible for delivery of the message
> to the
> > intended recipient, you are hereby notified that any
dissemination,
> > distribution or copying of this communication is strictly
> prohibited. If you
> > have received this communication in error, please notify the
sender
> > immediately by e-mail and delete the material from any
> computer. Thank you.
> >
>
>
------------------------------------------------------------------------------
Notice: This e-mail message, together with any attachments, contains
information of Merck & Co., Inc. (One Merck Drive, Whitehouse Station,
New Jersey, USA 08889), and/or its affiliates (which may be known
outside the United States as Merck Frosst, Merck Sharp & Dohme or MSD
and in Japan, as Banyu - direct contact information for affiliates is
available at http://www.merck.com/contact/contacts.html) that may be
confidential, proprietary copyrighted and/or legally privileged. It is
intended solely for the use of the individual or entity named on this
message. If you are not the intended recipient, and have received this
message in error, please notify us immediately by reply e-mail and then
delete it from your system.
------------------------------------------------------------------------------