簡體   English   中英

Liferay Webform Portlet 字段驗證

[英]Liferay webform portlet field validation

Portlet 描述了它應該如何工作:

輸入返回 true 或 false 的 JavaScript 代碼以驗證該字段。 以下隱式變量可用。

currentFieldValue:正在驗證的值 fieldsMap:按名稱索引的所有表單值的數組

我還沒有找到任何關於此的文檔。

無論如何,我有將表單輸入發送到我的電子郵件的網絡表單,但是如果未選中最后一個復選框,則它應該會出現錯誤。

所以我想出了這個代碼,但它不起作用:

if(currentFieldValue == false){return false;}

有人知道這個liferay webform portlet 驗證是如何工作的嗎?

  1. 停止Tomcat

  2. 進入 APPLICATION_SERVER_ROOT_DIRECTORY/webapps/web-form-portlet/WEB-INF/classes 目錄

  3. 打開 portlet.properties 並將“validation.script.enabled”屬性從“false”更改為“true”

  4. 啟動Tomcat

  5. Web 表單portlet 添加到頁面

  6. 在 Web 表單 portlet 的配置彈出窗口中,我們添加了一個復選框類型字段,其中包含您在描述中編寫的驗證腳本:“if(currentFieldValue == false){return false;}”和驗證錯誤消息:“勾選復選框!”

  7. 嘗試發送創建的表單而不選擇在上一步中創建的復選框。

結果:“勾選復選框!” 消息出現在屏幕上。

我像這樣嘗試過,但我總是得到 rrror You have entered invalid data. Please try again. You have entered invalid data. Please try again. .

於是我開始改變

if(currentFieldValue == false){return false;}

進入

if(currentFieldValue != ""){return true;}

似乎提交需要一個true可能它會自動設置為false

這適用於所有類型的領域。

currentFieldValue始終是一個字符串,因此對我來說正確的解決方案是將驗證腳本設置如下:

return (currentFieldValue == 'true')

我遵循了Algeron帖子中提到的步驟。 我在復選框字段中添加了自定義驗證,當我填寫表單並單擊“保存”按鈕時,無法處理該表單。 在tomcat標准輸出日志中,我發現了下一個錯誤:

12:45:27,628 ERROR [http-bio-8080-exec-2][WebFormUtil:257] The following script has execution errors:
return (currentFieldValue == 'true');
missing ] in index expression (Validation Script#8)

任何人有任何想法我該如何解決? 提前致謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM