public String login(){
FacesContext context = FacesContext.getCurrentInstance();
if(**<<some validation for value in field 'firstName' in form 'userForm'>>**){
FacesMessage message = new FacesMessage();
message.setSeverity(FacesMessage.SEVERITY_ERROR);
message.setSummary("Some Valication check");
message.setSummary("Some Valication check!!");
context.addMessage("userForm:firstName", message);//adds validation message for field firstName in form userForm
return "ERROR";
}
return "SUCCESS";
}
4 回答
仅在渲染响应阶段将
readonly
属性设置为true
. 这样,在渲染响应阶段之外的所有其他阶段中,它不会被视为只读 .回答评论:“在jsf页面支持bean中验证它不是更容易吗?”您可以在按钮单击或类似事件上执行应用程序级验证 . 你可以在你的支持bean中做这样的事情并将它链接到事件 .
希望这有帮助 .
我通过解决方法解决了这个问题 . 我添加了
inputHidden
字段,其中required
属性true
不会出现在界面上,但会被验证:bean.value的值由其他事件更改,并且在inputHidden上的某个reRender处,将进行验证 .
您很可能必须直接从事件中手动调用验证逻辑 . 这是IBM的JSF生命周期模型 .
您会注意到Process Validations阶段发生在通常处理事件的Invoke Application阶段之前 . 这种情况很好地发生,因此验证不会自动发生 .