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