PrimeFaces如何验证上传的文件名?

时间:2017-01-03 10:23:42

标签: java validation file-upload primefaces

是否有任何机构知道如何使用验证消息对PrimeFaces中的uploadFile进行验证?

查看:

<p:fileUpload id="upload" 
fileUploadListener="#{fileBean.handleFileUpload}"
update="uploads" auto="true" multiple="true" skinSimple="true"> 
<f:validator validatorId="uploadValidator"/>
<p> <h:messages id="messages" /></p>
</p:fileUpload>

FileBean:

List<UploadedFile> uploadedFiles;

    public void handleFileUpload(FileUploadEvent event) {
        if (uploadedFiles == null) {
            uploadedFiles = new ArrayList<>();
        }
        uploadedFiles.add(event.getFile());
    }

uploadValidator.java

@FacesValidator("uploadValidator")
public class UploadValidator implements Validator {
    @Override
    public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
        Part file = (Part) value;
        FacesMessage message=null;

        try {
            if (!file.getName().matches("\\w+"))
                message=new FacesMessage("Wrong file name");
            if (message!=null && !message.getDetail().isEmpty())
            {
                message.setSeverity(FacesMessage.SEVERITY_ERROR);
                throw new ValidatorException(message);
            }
        } catch (Exception ex) {
            throw new ValidatorException(new FacesMessage(ex.getMessage()));
        }
    }
}

我需要检查上传的文件名是否为拉丁语Unicode,否则 - 向用户显示消息&#34;文件名错误。&#34;我的代码不起作用。无论文件名如何,都不会显示任何消息。

谢谢。

1 个答案:

答案 0 :(得分:0)

有很多方法可以从您的managedBean中显示消息

来自您的实体

entity.java

@NotEmpty(message = "{validation.msg.notNull}")
@NotBlank(message = "{validation.msg.notBlank}")
@Column(name = "code", unique = true)
private String code;

并在您的page.xhtml

<p:inputText id="code" ...  />
<p:message for="code" />

使用此解决方案的大+如果p:inputTextNotEmptyNotBlank,则信息甚至不会转到实体级别,您无需创建条件以验证您的managedBean中的p:inputTextNotEmpty还是NotBlank

来自您的ManagedBean

page.xhtml

<p:messages id="msgs" globalOnly="true" showDetail="true" closable="true"/>
<p:inputText id="code" ...  />
<p:commandButton  ... actionListener="#{managedBean.validate()}" update=":msgs"  />

并在您的ManagedBean.java中

public void validate(){
...
MyUtil.addErrorMessage("ERROR");
...
}

您可以在Primefaces messages example web site中找到最佳示例,并且growl消息也是展示消息Primefaces growl example web site的好方法。

希望能帮到你。