来自 fileUploadListener 的验证消息未显示在 `<p:dialog>` 中
Validation Message from the fleUploadListener not showing inside a `<p:dialog>`
我有一个 <p:dialog>
正在上传文件。
<p:dialog id="uploadFileDialog"
header="Upload File" widgetVar="uploadFileDialog"
modal="true" minHeight="40">
<p:messages id="fileUploadMsgs" showDetail="true" autoUpdate="true"
closable="true" redisplay="false"/>
<p:fileUpload id="uploadFile" mode="advanced"
multiple="false" allowTypes="/(\.|\/)(docx|doc|pdf)$/"
fileUploadListener="#{testMB.uploadFileListener}"
auto="false" onstart="PF('ajaxStatusDialog').show()"
oncomplete="PF('ajaxStatusDialog').hide()">
</p:fileUpload>
</p:dialog>
在文件上传监听器中,我正在查看数据库中是否已存在文件,如果存在,我需要在对话框中抛出错误并返回。我尝试设置 globalOnly="true"
并在 RequestContext.getCurrentInstance().addMessage
中将客户端 ID 传递为 null,但没有成功。我什至尝试在 addMessage 中传递 <p:messages>
的 id,这也没有用。非常感谢任何帮助。
编辑:我的 fileUploadListener 代码
public void uploadFileListener(FileUploadEvent event){
boolean success = false;
List<Files> fileList = getDbFilesList();
if(fileList == null){
success = handleDocumentUpload(event);
}else{
success = false;
FacesContext.getCurrentInstance().addMessage(
"fileUploadMsgs",
new FacesMessage(FacesMessage.SEVERITY_ERROR,
"Error : ",
"File Already Exists."));
}
}
我正在使用 primefaces 5.2 和 jsf 2.2。谢谢!
我已经想出了一个让它工作的方法。请参阅下面的更新代码。
<p:dialog id="uploadFileDialog"
header="Upload File" widgetVar="uploadFileDialog"
modal="true" minHeight="40">
<h:form id="testForm>
<p:messages id="fileUploadMsgs" showDetail="true" autoUpdate="true"
closable="true" redisplay="true"/>
<p:fileUpload id="uploadFile" mode="advanced"
multiple="false" allowTypes="/(\.|\/)(docx|doc|pdf)$/"
fileUploadListener="#{testMB.uploadFileListener}"
auto="false" onstart="PF('ajaxStatusDialog').show()"
oncomplete="PF('ajaxStatusDialog').hide()" update="fileUploadMsgs">
</p:fileUpload>
</h:form>
</p:dialog>
文件上传监听器代码如下:
public void uploadFileListener(FileUploadEvent event){
boolean success = false;
List<Files> fileList = getDbFilesList();
if(fileList == null){
success = handleDocumentUpload(event);
}else{
success = false;
FacesContext.getCurrentInstance().addMessage(
"testForm:uploadFile",
new FacesMessage(FacesMessage.SEVERITY_ERROR,
"Error : ",
"File Already Exists."));
}
}