Validation p:fileUpload required=";“真的”;自定义验证程序不';行不通
由于Validation p:fileUpload required=";“真的”;自定义验证程序不';行不通,validation,jsf,primefaces,jsf-2.2,Validation,Jsf,Primefaces,Jsf 2.2,由于的required属性在PrimeFaces 4.0 final中似乎仍然不起作用,因此我尝试创建一个自定义验证器,如下所示 @FacesValidator(value="fileUploadValidator") public final class FileUploadValidator implements Validator { @Override public void validate(FacesContext fc, UIComponent uic, Objec
的required
属性在PrimeFaces 4.0 final中似乎仍然不起作用,因此我尝试创建一个自定义验证器,如下所示
@FacesValidator(value="fileUploadValidator")
public final class FileUploadValidator implements Validator
{
@Override
public void validate(FacesContext fc, UIComponent uic, Object o)
throws ValidatorException
{
System.out.println("fileUploadValidator called.");
if(!(o instanceof UploadedFile))
{
FacesMessage message = new FacesMessage();
message.setSeverity(FacesMessage.SEVERITY_ERROR);
message.setSummary("Error");
message.setDetail("Required");
throw new ValidatorException(message);
}
}
}
并用
指定
但是validate方法从未被调用。由于我在
中显示图像,因此非常需要进行此验证。有没有办法验证空的
?试试这个
@ManagedBean(name = "docBean")
@ViewScoped
public class DocumentBean implements Serializable
{
private UploadedFile file;
public void handleFileUpload(FileUploadEvent event)
{
uploadedFile = event.getFile();
}
//action
public void viewImage()
{
if(uploadFile==null){
FacesContext saveContext = FacesContext.getCurrentInstance();
saveContext.addMessage(null, new FacesMessage("Error", "Upload file required"));
}
}
}
我还没有查看4.0的源代码,但3.4的以下答案可能也适用于4.0:@BalusC:有什么解决方法吗?当然,这可以在相应的JSF托管bean中进行检查,以查看
UploadedFile
对象是否为null
,但这样做会导致一些JSF/PrimeFaces组件,如
被不必要地更新,导致在数据库上启动一些代价高昂的查询,这显然是错误和笨拙的。理论上,自定义渲染器应该这样做。如果不检查源代码,就无法从头判断。这可以在托管bean中完成,但它毕竟不是一个验证器,在填充托管bean中的任何相关属性/字段之前,它就被调用并执行其工作。
@ManagedBean(name = "docBean")
@ViewScoped
public class DocumentBean implements Serializable
{
private UploadedFile file;
public void handleFileUpload(FileUploadEvent event)
{
uploadedFile = event.getFile();
}
//action
public void viewImage()
{
if(uploadFile==null){
FacesContext saveContext = FacesContext.getCurrentInstance();
saveContext.addMessage(null, new FacesMessage("Error", "Upload file required"));
}
}
}