在jsf中,使用级联菜单有非常简单的实现方法,比如下面简单的例子,下拉菜单name的选值,决定下拉菜单value的值:
<td>
<h:selectOneMenu value="#{test.name}"
onchange="this.form.submit();"
valueChangeListener="#{test.onChangeName}" >
<f:selectItems value="#{test.names}" />
</h:selectOneMenu>
</td>
<td>
<h:selectOneMenu value="#{test.test.value}" >
<f:selectItems value="#{test.values}" />
</h:selectOneMenu>
</td>
onchange="this.form.submit();"这句提交页面的代码不要忘记写哦!
在Bean文件中,onChangeName方法的代码如下
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;
public class test{
private String name="";
private String value;
private List<SelectItem> names;
private List<SelectItem> values;
//这个方法什么也没写,主要就是刷新页面用
public void onChangeName(ValueChangeEvent event){
}
//在values的getValues方法中来处理数据
public void getValues(){
//设置初始值
values=......;
//当name取值为bb时,赋值,此处可以从数据库取值
if(name.equals("bb")) values=......;
当name取值为cc时,赋值,此处可以从数据库取值
if(name.equals("cc")) values=......;
return values;
}
}
简单给个思路,get set方法具体内容就不贴了,自己写吧.