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/main/java/org/apache/myfaces/custom/converter/enumeration/EnumConverter.java?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.
>