JSF h:selectOneMenu的问题,困扰我几天了,请大侠指教

大家好,我遇到一个关于JSF h:selectOneMenu的问题,还请大家帮忙,
在jsp页面上我可以从f:selectItems tag中看到所有的dropdownlist,但是它显示的那个缺省的
label应该却不是从数据库中拿到的.

一共有两张表,一张是Employee ,一张是Department,
depId在Employee 表中,同时它是Department表的主键,在数据库中是Integer类型.
下面是jsp的代码
the jsp code :
<h:selectOneMenu id="depId" value="#{loginInfoBean.employee.depId)">
<f:selectItems value="#{loginInfoBean.departmentList}"/>
</h:selectOneMenu>

departmentList的值是由下面代码在LoginInfoBean.java类中产生的:
while(rs.next()){
departmentList.add(new SelectItem(String.valueOf(rs.getInt("depId")),
rs.getString("depName")));
}

从数据库中可以拿到所有的departmentList,
depId(int) depName(String)
1 'Administrator'
2 'Network'
3 'Sales'
4 'Engineering'

在EmployeeBean.java中,我定义了下面的get/set方法:
private int depId;
public String getDepId() {
return String.valueOf(depId);
}

public void setDepId(String depId) {
this.depId = Integer.valueOf(depId).intValue();
}

现在的问题是:
下拉列表我可以拿到,但是缺省值拿不到,
比如数据库Employee表中depId是3,那我应该在下拉列表中缺省选中'Sales' ,
但现在看到的缺省选项始终是'Administrator' (对应depId为1)

我已经被困扰几天了,请高手帮忙,万分感谢~

不好意思,少了jsp code:


<h:selectOneMenu id="depId" value="#{loginInfoBean.employee.depId)">
<f:selectItems value=
"#{loginInfoBean.departmentList}"/>
</h:selectOneMenu>


> 在EmployeeBean.java中,我定义了下面的get/set方法:
> private int depId;
> public String getDepId() {
> return String.valueOf(depId);
> }
>
> public void setDepId(String depId) {
> this.depId =
> depId = Integer.valueOf(depId).intValue();
> }
>
> 现在的问题是:
> 下拉列表我可以拿到,但是缺省值拿不到,
> 比如数据库Employee表中depId是3,那我应该在下拉列表中缺?> 选中'Sales' ,
> 但现在看到的缺省选项始终是'Administrator'
> (对应depId为1)
>
> 我已经被困扰几天了,请高手帮忙,万分感谢~

你的public void setDepId(String depId)方法没有调用吧。
我觉得应该这样写
public String getDepId() {
setDepId("3");//设置默认值
return String.valueOf(depId);
}

多谢回复!


<h:selectOneMenu id="depId" value="#{loginInfoBean.employee.depId)"> <f:selectItems value="#{loginInfoBean.departmentList}"/> </h:selectOneMenu>

上面的这种写法它会有一个默认值的,就是loginInfoBean.employee.depId。

请高手指点一下到底问题出在哪,急!!

用javax.faces.model.SelectItem去解决
把list的值给SelectItem 
然后在


<f:selectItems value="#{loginInfoBean.SelectItem(对象)}"/>

想要得到你要得到的默认值 自己在list处理一下
说明:depId不用set初始值

selectOneMenu的列表值一般从javabean中取,一般是一个集合,而它的当前值也可以用javabean指定,这些javabean都可以在jsf的配置的xml中,当然,还可以设置javabean的scope为request或者session等。你要设selectOneMenu的缺省值,在javabean中指定其初始值即可。好象你也可以将缺省值配到jsf的xml文件里。一般这个值包含于selectOneMenu列表中。当然,还要注意是值对应,而不是显示的text。