JSF ページの AJAX に問題がある可能性があります。彼は Bean メソッドを呼び出しません。コンバーターは機能し、正しいオブジェクトを返しますが、Bean メソッドは呼び出されません。実行セクションのメソッド呼び出しを削除すると。カバーターを削除して Id メソッド呼び出しのみを送信するとします。一緒に失敗します。
JSFページ
<h:form id="jewelForm">
<!-- ... -->
<h:selectOneMenu id="material" value="#{jewelBean.material}" >
<f:converter converterId="materialConverter"/>
<f:selectItems value="#{jewelBean.materialList}" var="c"
itemLabel="#{c.name}" itemValue="#{c.id}" />
</h:selectOneMenu>
<h:commandButton id="but1" value="#{titles.addThisMat}">
<f:ajax id ="aj1"
listener="#{jewelBean.addMaterial}"
render="jewelForm:matTable"
execute="material"/>
</h:commandButton>
<h:dataTable id ="matTable"
</h:dataTable>
<h:commandButton value="#{titles.createThisJ}"
action="#{jewelBean.saveJewel()}" />
</h:form>
豆
@ManagedBean(name = "jewelBean")
@SessionScoped
public class JewelBean implements Serializable {
private Material material;
public void addMaterial() {
MaterialJewel mj = new MaterialJewel();
mj.setMaterial(material);
mj.setWeight(materialWeight);
materialJewels.add(mj);
}
public Material getMaterial() {
return material;
}
public void setMaterial(Material material) {
this.material = material;
}
}
コンバータ
@FacesConverter("materialConverter")
public class materialConverter implements Converter {
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
try {
//finding object with DAO
return material;
}
} catch (NumberFormatException ex) {
}
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
return value.toString();
}
}
コメントありがとうございます。