【发布时间】:2019-01-20 17:45:28
【问题描述】:
我正在使用 JSF 和 Primefaces。我有一个带有 f:viewParam 的 edit.xhtml 页面接收实体 ID:
<f:viewParam name="id" value="#{backingBean.entity}" converter="entityConverter" />
我有两个commandButton,一个用来提交和保存实体:
<p:commandButton ajax="false" value="#{bundle.save}"
action="#{backingBean.save()}"/>
另一个将项目添加到实体集合中:
<p:commandButton ajax="true" process="@this" value="#{bundle.add}"
actionListener="#{backingBean.addItem()}" />
这是我的 BackingBean:
@ViewScoped
@Named("backingBean")
public class BackingBean {
@EJB
MyDAO myDAO;
private Entity entity; //with getters and setters
public void addItem() {
entity.getData().add(new Item()); //another entity object
}
public void save(){
myDAO.save(entity);
}
...
}
我还有一个调用 DAO 并加载对象的 EntityConverter 类:
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
try {
return myDAO.findById(Entity.class, Long.valueOf(value));
} catch (Exception e) {
return null;
}
}
如果我尝试添加多个项目或单击保存按钮,则会通过调用转换器类的 getAsObject 方法重新加载 BackingBean 类中的实体。
我做错了什么? 谢谢!
【问题讨论】:
标签: jsf primefaces converter