我有一个奇怪的问题。我正在使用JSF 2.2 + Primefaces + Bootstrap。当我单击“保存”按钮时,将调用验证,如果发生任何错误,则抛出异常并向用户显示一条消息。看我的代码:
我在ManagedBean中调用操作的按钮:
<h:commandLink
action="#{cc.attrs.managedBeanName.salvarAndRedirecionar()}"
styleClass="btn btn-default" value="Salvar">
<i class="fa fa-save fa-fw"></i>
</h:commandLink>
我的ManagedBean操作:
public String salvarAndRedirecionar(){
salvar();
if (!FacesContext.getCurrentInstance().isValidationFailed()){
return goToLastPage() + "?faces-redirect=true";
}else{
return "";
}
}
public void salvar() {
beforeSave();
if (FacesContext.getCurrentInstance().isValidationFailed()){
return;
}
try {
bean = (Bean) getUtil().save(bean);
addInfoMessage("Registro salvo com sucesso");
afterSave();
} catch (BException e) {
e.printStackTrace();
addErrorMessageValidationFailed(e.getMessage());
} catch (Exception e) {
e.printStackTrace();
addErrorMessageValidationFailed((new StringBuilder()).append("Erro ao salvar. ")
.append(e.getMessage()).toString());
}
return;
}
想象一下,我有以下几点:汽车,有轮子和颜色。车轮和颜色是强制性的,并且验证受让人。如果我填写没有轮子和颜色的汽车信息,我应该得到消息:
“汽车需要轮子”。因为第一次验证是关于车轮的。所以我填充轮子并尝试再次保存(现在没有颜色)。下一条信息应该是:“汽车需要颜色”。但是没有显示任何内容,只是在IDE CONSOLE(eclipse)上。
浏览器控制台中没有任何错误。我该如何解决这个问题?
编辑1:
当我尝试从primefaces使用commandButton时,一切正常。看:
<p:commandButton action="#{cc.attrs.managedBeanName.salvarAndRedirecionar()}" value="salvar" />
我因为bootstrap而使用JSF commandButton。