【发布时间】:2012-03-07 22:42:09
【问题描述】:
除了一对 inputText,我在页面上的一个强制性组件是 p:fileUpload。所以当我点击提交时,<p:message> 出现在具有require=true 的组件上,但用户没有输入/选择
我希望红色框Required 也出现在上传组件旁边。这是我尝试过的。
1 .当我在 p:fileUpload 中设置 required="true" 时,什么都没有发生(不确定这是否是一个错误)。
2.我将validator 放入p:fileUpload,下面是我的验证器来源
public void validateFileUpload(FacesContext context, UIComponent component,
Object value) throws ValidatorException {
if(value == null){
FacesMessage message = new FacesMessage();
message.setSeverity(FacesMessage.SEVERITY_ERROR);
message.setSummary("Error");
message.setDetail("Required");
throw new ValidatorException(message);
}
}
当我点击提交时什么都没有发生,甚至当我完成上传时,validateFileUpload 根本没有被调用(不确定这是否是一个错误)
3 .当我单击提交时,如果其他所有内容都通过了,并且我进入了我的操作方法,我可以检查文件是否为空,然后返回 FacesMessage 并让 p:growl 接听它。但是,我不喜欢这种方式,因为它给用户一种多层验证的感觉。
有没有办法对 p:fileUpload 进行更好的验证?
【问题讨论】:
-
不确定,但也许我的recent questions 之一是相关的。
-
@MattHandy:我以前看过你的问题。我尝试了
validator属性和f:validator,没有任何反应。
标签: jsf primefaces