我基本上有一個可能不為空的文本字段,所以我添加了這個驗證:t:validate="required"(我實際上還有一些驗證標準,但它們在這里不相關)。但是,有時也可以禁用此字段(它綁定到 Java 代碼中的屬性):t:disabled="isFieldADisabled"此外,該值綁定到一個屬性:t:value="entity.fieldA"它被設計成當字段被禁用時屬性永遠不會為空。但是,當該字段被禁用時,我無法提交表單 - 即使文本框中顯示了某些內容。我不知道這里發生了什么,但我隨后嘗試手動驗證,如下所示:@OnEvent(value = EventConstants.VALIDATE)void onValidate(){ if (isFieldADisabled) // What should I do here?}正如我的評論指出的那樣,我不確定在那里做什么。作為一個額外的復雜性,整個事情都在 acontainer中,它本身包含在 a form- 所以我真的無法從onValidate方法中訪問表單本身。我懷疑這是一個普遍問題,如果不是,請告訴我您是否需要更多信息。編輯我已經評估了文本字段的狀態onPrepareForSubmitFromEditForm:如您所見,該字段確實被禁用,其值甚至不是空的。然而在onValidateFromEditFormtge 中值disabled實際上是假的,但該字段的值仍然不是空的。
1 回答

慕尼黑8549860
TA貢獻1818條經驗 獲得超11個贊
如果您的組件在表單內,您可以在呈現/表單提交期間使用組件可用的內置環境服務之一,即ValidationTracker。使用該服務可以手動記錄表單驗證錯誤,即ValiadationTracker#recordError(Field field, String message)
.
默認情況下,此類組件不會接收該VALIDATE
事件,因為此事件在Form
組件本身上觸發并冒泡到其容器。當您需要對多個字段進行自定義驗證時,此事件用于跨表單驗證。您仍然可以ValidationTracker
用來記錄驗證錯誤。
至于 的disabled
屬性AbstractField
,如果它的值為true
組件不參與驗證,客戶端和服務端都不參與:
如果為 true,則該字段將呈現禁用屬性(以關閉客戶端行為)。當表單被提交時,綁定的值會再次被評估,如果為真,那么字段的值將被忽略(甚至不被驗證)并且組件的事件不會被觸發。
添加回答
舉報
0/150
提交
取消