jsf(richfaces)只读输入文本验证
答
我用解决方法解决了这个问题。我已经添加了具有required
属性true
不会在界面上出现的inputHidden
场,但将被验证:
<h:inputHidden value="#{bean.value}" required="true"
requiredMessage="Data must be entered" />
bean.value的价值被其他事件改变,在一些重新描绘上inputHidden,验证发生。
答
您很可能必须直接从您的事件手动调用验证逻辑。这是来自IBM的JSF生命周期模型。
你会发现调用应用程序阶段,事件通常被处理之前处理验证阶段发生。这种情况发生后很好,所以验证不会自动发生。
答
回答评论:“在jsf页面支持bean中验证它会更容易吗?” 您可以对按钮单击或某些类似事件进行应用程序级验证。你可以在你的支持bean中做这样的事情,并将它链接到事件。
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";
}
希望这对我有所帮助。
答
仅在渲染响应阶段将readonly
属性设置为true
。通过这种方式,在渲染响应阶段以外的其他阶段不会被视为只读。
<h:inputText ... readonly="#{facesContext.currentPhaseId.ordinal eq 6}" />
+2
在我的例子中,当绘制HTML(当它打印在中间)时,#{facesContext.renderResponse}返回false。无论如何,它的工作方式是'#{facesContext.currentPhaseId.ordinal eq 6}'。 Mojarra 2.1.9。 – SJuan76 2012-09-20 11:28:42
无论在jsf页面支持bean中验证它会更容易吗? – Richie 2012-03-08 12:17:55
如何触发验证并发出验证消息? – 2012-03-09 23:15:06
我已添加答案作为回复评论。欢呼声 – Richie 2012-03-12 11:18:26