我有页面管理用户。所有用户都将在primefaces数据表中显示。
用于编辑用户我推荐一个链接名称是编辑。所以当我点击编辑时,它将带有id
用户并转到编辑页面。在我使用的编辑页面
<f:event type="preRenderView" listener="#{editUserBean.init}"/>.
所以init()方法将获取请求参数。
我的问题是我在editUser页面上进行了验证。当我提交表格时没有任何
值然后它不显示任何消息错误消息。它正在没有任何
的情况下工作值。在页面上有两种形式。一个表单有preRenderView标记,其他表单有
可验证的可编辑数据。
` public void init()抛出异常 {
Object o1=FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id");
if(o1==null ||(editNews=Facade.othfac().getTVecNewsFindAllValidTill(o1.toString(),Integer.valueOf(o2.toString())))==null)
{
FacesContext.getCurrentInstance().getExternalContext().redirect("/HeWebEV/admin/ManageUsrs.jsf");
}
else
{
setEditNews(Facade.othfac().getTVecNewsFindAllValidTill(o1.toString(),Integer.valueOf(o2.toString())));
}
}
public void updateNewsAction() throws Exception
{
log.info("in UpdateUserAction__");
save to database.
FacesContext.getCurrentInstance().getExternalContext().redirect("/HeWebEV/admin/ManageUser.jsf");
}`
它不是调用更新操作,而是在没有参数的情况下调用init(),因此它是
重定向到其他页面。
当我删除preRenderView标记并使用Constructor而不是init()时,它正在工作。
答案 0 :(得分:0)
bean必须是@ViewScoped
并且init()
方法应该仅在初始请求期间完成其工作,而不是在回发时。
public void init() {
if (!FacesContext.getCurrentInstance().isPostback()) {
// Do the job here.
}
}