我正在使用passthrough
將onchange
傳遞給PF文件上傳組件。我想摺疊一個面板,並在用戶選擇文件時展開另一個面板。如何在onchange上捕獲錯誤/驗證錯誤文件上傳
我遇到的問題是我總是摺疊和擴大面板。如果發生錯誤,我不希望這樣做。而錯誤,我的意思是如果我添加一個不受支持的文件類型。如果我這樣做,將會顯示PF錯誤信息,但onchange
中的內容也會被調用。
我嘗試使用了args
但這不是工作passthrough
...
如何我可以檢查這些特定的錯誤和只執行有什麼onchange
內如果沒有任何?或者我可以以某種方式捕捉它們?
<p:fileUpload disabled="#{userAccess.isDisabled()}"
id="documentUpload"
label="#{msg['components.fileUpload.chooseDocument']}"
uploadLabel="#{msg['components.fileUpload.uploadLabel']}"
cancelLabel="#{msg['components.fileUpload.cancelLabel']}"
invalidSizeMessage="#{nts['error.documentType.invalidFileSize']}"
invalidFileMessage="#{cc.attrs.invalidFileTypeMessage}"
fileUploadListener="#{cc.attrs.documentsHandler.handleFileUpload}"
mode="advanced"
dragDropSupport="true"
oncomplete="PF('#{clientId}_addPanel').collapse();"
update="#{cc.clientId}:displayPanel"
process="@this"
allowTypes="#{cc.attrs.allowedTypes}"
styleClass="#{cc.attrs.styleClass}"
sizeLimit="1000000"
pt:onchange="if (tagName == 'INPUT' && #{!cc.attrs.isLogo}) { if (!!value) {PF('#{clientId}_addPanel').collapse(); PF('#{clientId}_editPanel').expand();} }">
<f:attribute name="document" value="#{cc.attrs.documentsHandler.document}" />
</p:fileUpload>
更新:
我甚至試圖讓這裏的消息都像console.log($(PrimeFaces.escapeClientId('#{cc.clientId}:addPanel')).find('.ui-messages-error-summary'));
與這也沒有成功存儲類名的DOM元素,它不使用時,發現了什麼onchange
方法,但之後通過在瀏覽器控制檯中手動運行上述語句來查找。好像onchange
在PF修改標記之前被執行。或者至少不是所有的標記...
有什麼建議嗎?