亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

禁用字段上的 Tapestry 驗證

禁用字段上的 Tapestry 驗證

一只名叫tom的貓 2022-05-25 15:32:42
我基本上有一個可能不為空的文本字段,所以我添加了這個驗證: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,則該字段將呈現禁用屬性(以關閉客戶端行為)。當表單被提交時,綁定的值會再次被評估,如果為真,那么字段的值將被忽略(甚至不被驗證)并且組件的事件不會被觸發。


查看完整回答
反對 回復 2022-05-25
  • 1 回答
  • 0 關注
  • 105 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號