On 11/25/05, Laurie Harper <[EMAIL PROTECTED]> wrote:
>
> Craig McClanahan wrote:
> > There are some significant interoperability issues between JSF 1.0/1.1
> and
> > JSTL -- some of which have been addressed in JSF 1.2. But there is a
> more
> > fundamental design issue here ... you're trying too hard :-). Consider
> this
> > instead:
> >
> > <h:selectOneMenu id="status" value="#{ProjectEdit.status}">
> > <f:selectItems value="#{projects.statusList}"/>
> > </h:selectOneMenu>
> >
> > where the getStatusList() method of your "projects" managed bean returns
> an
> > array or list of SelectItem instances. There's no reason for you to
> have to
> > do the iteration in the view tier.
>
> LOL! I'm actually using exactly that pattern elsewhere.
:-)
The reason I
> didn't here is that the label needs to be localized:
>
> <f:loadBundle basename="MessageResources" var="msgs"/>
> ...
> <h:selectItem value="..." itemLabel="#{msgs['stat.lbl.'s.name]}"/>
>
> in other words, if s.name is ACTIVE, the label should be the resource
> string keyed by 'stat.lbl.ACTIVE'. I didn't think I could get at the
> localization resources loaded in the current view from within an
> application-scoped bean's getter method (though I might be wrong about
> that!).
In my localized apps, I bury that sort of thing inside the getter method for
the SelectItems list. You can figure out what Locale you need to localize
for, for the current request, by calling:
FacesContext.getCurrentInstance().getViewRoot().getLocale()
with per-Locale caching to prevent needless regeneration of an appropriate
list or array. Saves a lot of time having to explain what <c:forEach> does
to a graphic designer.
L.
Craig