我有两个bean类vehicletypes和cars from vehicletypes是一个车辆列表,从中选择一个类型名作为汽车类。所以我用v.name填充car.xhtml中的列表,使用组合框工作正常。用于分配这个 typename 到 cars.name 我正在使用侦听器操作,如下所示:
.XHTML 代码
<h:selectOneMenu>
<f:selectItems value="#{vehicletypes.veh}" var="v" itemLabel="#{v.name}" />
<f:ajax event="change" listener="#{cars.combochange}" />
<f:param name="idx" value="#{v.name}" />
</h:selectOneMenu>
托管豆:
public String getcombochange(FacesContext fc)
{
Map<String,String> params =fc.getExternalContext().getRequestParameterMap();
return params.get("idx");
}
public String combochange(){
String type;
FacesContext fc = FacesContext.getCurrentInstance();
type= getcombochange(fc);
System.out.println("\nChange occured Car type assigned"+type);
return "result";
}
在使用 println 在控制台上打印 cartype 的值时,它始终为空,代码中有什么问题我试图将默认字符串作为参数传递,但它也不起作用。
也尝试过这种方式,但这并没有调用动作本身;
.xhtml
<h:selectOneMenu>
<f:selectItems value="#{vehicletypes.veh}" var="v" itemLabel="#{v.name}" />
<f:ajax event="change" listener="#{cars.combochange}" />
<f:attribute name="add" value="default" />
</h:selectOneMenu>
豆类
public String combochange(ActionEvent event){
String type = (String)event.getComponent().getAttributes().get("add");
System.out.println("Add pool:"+type);
return null;
}
不明白为什么不调用该动作。