私は 2 つの Bean クラス vehicletypes を持っており、 vehicletypes からの車は車のクラスに対して 1 つのタイプ名が選択される車のリストです。このタイプ名をcars.nameに、次のようにlisternerアクションを使用しています:
.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 の値を出力している間、それは常に null です。
この方法も試しましたが、これはアクション自体を呼び出しません。
.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;
}
アクションが呼び出されない理由がわかりません。