Portlet描述了它应该如何工作:
输入返回true或false的JavaScript代码以验证领域。以下隐式变量可用。
currentFieldValue:正在验证的值fieldsMap:的数组所有按名称索引的表单值
我还没有找到任何与此相关的文档。
无论如何,我有Web表单将表单输入发送到我的电子邮件中,但是如果未选中最后一个复选框,则应该给出错误。
所以我想出了这段代码,但是它不起作用:
if(currentFieldValue == false){return false;}
任何人都知道liferay Webform Portlet验证的工作原理吗?
我以这种方式尝试过,但总是收到错误You have entered invalid data. Please try again.
。
所以我开始改变
if(currentFieldValue == false){return false;}
进入
if(currentFieldValue != ""){return true;}
[似乎提交人需要true
,但它会自动设置为false
。
这适用于所有领域。
停止Tomcat
转到APPLICATION_SERVER_ROOT_DIRECTORY / webapps / web-form-portlet / WEB-INF / classes目录
打开portlet.properties,并将“ validation.script.enabled”属性从“ false”更改为“ true”
启动Tomcat
将Web Form portlet添加到页面中
在Web窗体portlet的配置弹出窗口中,我们添加了一个复选框类型字段,其中包含您在描述中编写的验证脚本:“ if(currentFieldValue == false){return 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)
任何人都知道我该如何解决?预先感谢。