0

Primefaces ピックリストにターゲットを事前設定する方法は?

DualListModel次のコードで初期化しました:

List<Dimension> dimensionsSource = new ArrayList<Dimension>();
List<Dimension> dimensionsTarget = new ArrayList<Dimension>();

Dimension dimension = new Dimension("Year", "year", "name");
dimensionsSource.add(dimension);

dimension = new Dimension("Quarter", "quarter", "id");
dimensionsSource.add(dimension);

dimension = new Dimension("Month", "month", "id");
dimensionsTarget.add(dimension);

dimensions = new DualListModel<Dimension>(dimensionsSource, dimensionsTarget);

PickList画面に表示されると、ターゲットリストに「月」がありますが、データを送信するとgetTarget()空のリストが返されます。

4

1 に答える 1

0

この問題を解決します!理由は間違ったコンバーターにありました:

@FacesConverter(value = "dimensionsConverter")
public class DimensionsConverter implements Converter {
@Override
public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String s)     {
    @SuppressWarnings("unchecked")
    DualListModel<Dimension> value = (DualListModel<Dimension>)((PickList) uiComponent).getValue();
    List<Dimension> source = value.getSource();
    for (Dimension dimension : source) {
        if(s.equals(dimension.getTableAndOrderColumn())){
            return dimension;
        }
    }

    return null;
}

@Override
public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object o) {
    return ((Dimension)o).getTableAndOrderColumn();
}

月がターゲットリストにあるのに、コンバーターはソースリストで「月」を見つけようとしています:) お時間をいただきありがとうございます。

于 2014-09-03T18:43:08.920 に答える