0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

JSFのSelectItemを使って選択肢ラベルを変更する。

Last updated at Posted at 2015-04-09

http://stackoverflow.com/tags/selectonemenu/info
http://stackoverflow.com/questions/10655349/jsf-2-fselectitems-with-map-does-not-display-itemlabel

上記を参考にjavax.faces.model.SelectItemを使って、
ラベルを「ラベル:値」とした選択肢を実装しようとしたがうまくいかなった。
itemLabel属性に設定したのが有効にならず、単純にcountry.labelが表示されるだけとなってしまう。
なんでやーー

実装した内容

country.xhtml
<h:selectOneMenu value="#{bean.countryCode}">
     <f:selectItems value="#{bean.countries}" var="country" 
            itemValue="#{country.value}" itemLabel="#{country.label + ':' + country.value}" />
 </h:selectOneMenu>
Country.java
import javax.faces.model.SelectItem;

private String countryCode;
private List<SelectItem> countries;


@PostConstruct
public void init() {
    countries = service.getCountries();
}

結論としては、SelectItemではなく自分で定義したBeanを使えばitemLabelが有効になった。

ソースは確認していないが、SelectItemを使うとその情報だけで表示しようとするみたい。
SelectItem使ってもitemLabelでカスタマイズしたらそれが有効になってほしいのに。。。

Country.java

import javax.faces.model.SelectItem;

private String countryCode;
private List<Country> countries;


@PostConstruct
public void init() {
    countries = service.getCountries();
}
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?