[英]JSF validation in action phase
我们有一个基于JSF的Web应用程序,该应用程序将输入表单数据提交到Web服务 ,然后显示Web服务提供的响应。
Web服务验证用户输入的输入数据。 我不确定如何在这里使用JSF validation
。 根据我的理解,JSF会验证视图中的各个组件。 但是每次都发出Web服务请求将是非常昂贵的操作。
相反,当用户提交表单时,我们将跳过所有验证,并在action方法中提出Web服务请求。 基于Web服务的响应,我们可以以编程方式判断特定的UI组件无效吗?
您能对此提供您的建议吗?
环境:-
JSF 2.0
WebSphere Application Server 8.5
基于Web服务的响应,我们可以以编程方式判断特定的UI组件无效吗?
是的,您可以通过调用UIInput#setValid()
并传递false
。 这是完整的片段:
FacesContext context = FacesContext.getCurrentInstance();
UIInput input = (UIInput) context.getViewRoot().findComponent("form:input");
input.setValid(false);
context.addMessage(input.getClientId(context), message);
context.validationFailed();
不需要在每次输入的基础上调用FacesContext#validationFailed()
。
查看本教程 -“手动验证”部分。
这可能就是您要完成的工作。
手动验证
例如在bean中:
public void setBidAmount(String bidAmount) {
this.bidAmount = bidAmount;
try {
numericBidAmount = Double.parseDouble(bidAmount);
} catch(NumberFormatException nfe) {}
}
并在行动方法中:
public String doBid() {
FacesContext context = FacesContext.getCurrentInstance();
if (getNumericBidAmount() <= 0.10) {
context.addMessage(null,
new FacesMessage("Bid amount must be at least $0.10."));
}
...
if (context.getMessageList().size() > 0) {
return(null);
} else {
doBusinessLogicForValidData();
return("show-bid1");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.