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();
}

Converter 正在尝试在源列表中查找“月份”,而月份在目标列表中:) 感谢所有您的时间!

于 2014-09-03T18:43:08.920 回答