我有兩個bean類,vehicletypes和vehiclestypes中的汽車是從中爲汽車類選擇一個typename的車輛列表。所以我填充由v.name car.xhtml名單及其工作正常使用組合box.For分配此類型名稱來cars.name我使用listerner動作,如下所示:f:ajax參數傳遞不起作用,動作被調用,但值始終爲空
.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>
託管bean:
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>
Bean類
public String combochange(ActionEvent event){
String type = (String)event.getComponent().getAttributes().get("add");
System.out.println("Add pool:"+type);
return null;
}
不明白爲什麼動作不叫。
參見:http://stackoverflow.com/questions/4782430/how-to-pass-additional-parameters-in-ajax-request-on-change-value-in- hselectone – 757071 2013-03-12 07:48:49