我们有一个使用Primefaces 7.0的JSF应用程序,目前正在运行。该应用程序允许用户使用Primefaces FileUpload组件上传文件,然后我们处理和处理该组件。
防火墙团队强迫防火墙坐在上传过程的前面,如果它认为文件不合适,将阻止上传请求击中应用程序,并向浏览器返回一个503错误。我正在努力找出我们如何处理JSF应用程序中的503错误,因为请求从未击中服务器,我找不到合适的属性,我们可以添加到FileUpload组件中,该组件将侦听503(尝试使用onerror)。如下面的代码所示(但不幸的是,当503错误发生时,它不会被调用)。如果不处理此错误,则不会向用户显示任何提示。理想情况下,我们会向用户显示一条提示信息,要求他们尝试不同的文件类型。
下面是当前FileUpload组件的代码,但我不确定它是否有任何用途,因为我正在寻找更多的建议而不是代码修复。
有人知道如何处理503吗?
感谢<p:fileUpload widgetVar="upload" id="upload"
disabled="#{user.filesRemaining eq 0}" label="SELECT FILES"
fileUploadListener="#{controller.handleFileUpload}"
styleclass="smallCommandButton" mode="advanced"
dragDropSupport="true" auto="true"
allowTypes="/(.|/)(jpeg|jpe|jpg|png|pdf)$/i" sizeLimit="10485760"
invalidSizeMessage="Image files must be under 10MB in size"
invalidFileMessage="Only JPG, PNG or PDF files can be uploaded"
onerror="#{controller.handleUploadError()}"
onstart="PF('uiBlocker').show()"
oncomplete="PF('uiBlocker').hide()">
</p:fileUpload>
找到了一个解决方案,我需要将以下代码添加到我的fileUpload组件中,'arguments'携带错误信息:
onerror="handleUploadError(arguments)"
,然后创建相应的javascript函数来处理错误,例如
function handleUploadError(arguments) {
if(arguments[0].status === 503) {
**create message for user here**
}
}