3

List<Date>改宗しないのはなぜですか? <p:selectOneMenu>アイテム のパターンThu Mar 01 00:00:00 BRT 2012は、目的の「MM/yyyy」ではなく、次のようになります。

<p:selectOneMenu value="#{report003.selectedMes}">
  <p:ajax update="pesquisaThomas" listener="#{report003.loadPesquisa()}" />
  <f:selectItem itemLabel="[Todos]" itemValue="" />
  <f:convertDateTime pattern="MM/yyyy" />
  <f:selectItems value="#{report003.pesquisaMeses}" />
</p:selectOneMenu>
4

2 に答える 2

4

変換はアイテムののみに適用され、アイテムのラベルには適用されません。ラベルは、デフォルトのDate#toString()パターンを使用して表示されます。

あなたの最善の策は、アイテムラベルを自分で変換する 代わりに作成することです。List<SelectItem>List<Date>

List<Date> availableDates = ...;
List<SelectItem> selectItems = ...;
SimpleDateFormat sdf = new SimpleDateFormat("MM/yyyy");

for (Date availableDate : availableDates) {
    selectItems.add(new SelectItem(availableDate, sdf.format(availableDate)));
}

または<f:selectItems var>の EL 関数で使用しitemValueます。たとえば、OmniFacesof:formatDate() (または自家製のもの) です。

<f:selectItems value="#{bean.availableDates}" var="date" 
    itemValue="#{date}" itemLabel="#{of:formatDate(date, 'MM/yyyy')}" />

ちなみに、この問題は に固有のもの<p:selectOneMenu>ではありません。標準の を使用すると、まったく同じ問題が発生します<h:selectOneMenu>

于 2012-09-26T15:00:37.960 に答える
0

これを試して:

管理された Bean

private SimpleDateFormat sdf;
(...)

@PostConstruct
public void init(){
    sdf = new SimpleDateFormat("MM/yyyy");
}

public SimpleDateFormat getSdf(){
    return sdf;
}

public void setSdf(SimpleDateFormat sdf){
    this.sdf = sdf;
}

xhtml

<p:selectOneMenu value="#{report003.selectedMes}">
    <p:ajax update="pesquisaThomas" listener="#{report003.loadPesquisa()}" />
    <f:selectItem itemLabel="[Todos]" itemValue="" />
    <f:selectItems value="#{report003.pesquisaMeses}"
                   var="mes" itemValue="#{mes}"
                   itemLabel="#{myMB.sdf.format(mes)}" />

于 2013-10-18T19:35:26.803 に答える