是否有任何机构知道如何使用验证消息对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;我的代码不起作用。无论文件名如何,都不会显示任何消息。
谢谢。
答案 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:inputText
为NotEmpty
且NotBlank
,则信息甚至不会转到实体级别,您无需创建条件以验证您的managedBean中的p:inputText
是NotEmpty
还是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的好方法。
希望能帮到你。