如何填充和预选h:selectOneMenu?

时间:2012-02-15 08:27:37

标签: java jsf

我在根据ID推广下拉列表时遇到问题。

查看:

<h:selectOneMenu id="dropDown" value="#{sampleVo.dropDownType}" ">
    <f:selectItem itemValue="Select Value" itemLabel="Select Value" />
    <f:selectItems value="#{sampleService.dropDownList}" />
</h:selectOneMenu>

SampleVo

public class SampleVo implements Serializable {

    private String dropDownType;

    // getters and setters
}

SampleService

public class SampleServiceImpl implements SampleService {

    private List<SampleVo> listOfSampleVo;
    private List<String> dropDownList;

    public void onLoad() {
        dropDownFunction();
    }

    public void dropDownFunction() {
        if (dropDownList == null) {
            dropDownList = new ArrayList<String>();
            dropDownList.add("ONE");
            dropDownList.add("TWO");
            dropDownList.add("THREE");
        }
    }   

}

数据库结构:

 
    SAMPLE_ID       SAMPLE_DESCRIPTION
        1                   ONE
        2                   TWO
        3                   THREE

在页面加载期间,所有三个下拉值都会填充默认的“选择值”作为第一个选项。下拉值映射到数据库,带有样本ID。如果DB中存在记录(即样本id = 2,样本描述= TWO),我想根据ID在下拉列表中显示两个。我怎样才能做到这一点?

5 个答案:

答案 0 :(得分:1)

不要将dropDownList作为String列表,而是将其设为SelectItem列表。您可以通过这种方式单独设置值和标签。

答案 1 :(得分:0)

public class SampleVO {
    private int value;
    private String name;
    //getter & setter
}

在你的xhtml中

<f:selectItems value="#{sampleService.dropDownList}" var="v" itemLabel="#{v.name}" itemValue="#{v.value}"/>

答案 2 :(得分:0)

好的,我认为你需要一个自定义转换器

您可以查看here

检查getAsString()和getAsObject()的实现,并根据需要对其进行自定义。

提示。 getAsString应返回TWO,getAsObject应返回整个SampleVO对象。

le:@Pablo你是对的......他也需要这个

答案 3 :(得分:0)

根据你的问题,当你的页面被加载时,你想要获得默认选择值是(样本id = 2,样本描述= TWO)。所以你应该在你的“dropDownType”变量中初始化这个值。你的xhtml是如果您使用了f:selectItems标记,则应删除f:selectItem标记。

答案 4 :(得分:0)

更改dropDownFunction() 把它作为一个列表

public List<SelectItem> dropDownItems() {
    ArrayList<SelectItem> items = new ArrayList<SelectItem>();
    items.add(new SelectItem(1,"ONE");
    items.add(new SelectItem(2,"TWO");
    items.add(new SelectItem(3,"TREE");
}   

将dropDownType更改为整数