将 theme="simple"
应用于我的Struts 2表单标记时,JavaScript validateForm_<formName>
函数不再“生成”。
表格标签:
<s:form id="editForm" validate="true" action="Edit" namespace="/ValidationTest" theme="simple">
从JavaScript控制台:
> validateForm_editForm()
ReferenceError: validateForm_editForm is not defined
没有主题它工作正常(所以我假设XML验证文件和其他配置是正确的):
<s:form id="editForm" validate="true" action="Edit" namespace="/ValidationTest">
JS控制台:
> validateForm_editForm()
false
我不知道它是否重要,但<s:head />
标签存在:
<head>
...
<s:head />
</head>
validateForm_<formName>
函数(类似于使用简单主题添加<s:fielderror />
标记),是否有特定要包含的内容? 答案 0 :(得分:0)
未经测试,但尝试将两个javascript-s添加到JSP。
<script type="text/javascript" src="<s:url value="/struts/xhtml/validation.js"/>"></script>
<script type="text/javascript" src="<s:url value="/struts/utils.js"/>"></script>
将表单更改为以下内容:
<s:form id="editForm" onreset="clearErrorMessages(this);clearErrorLabels(this);"
onsubmit="return validateForm_editForm();" theme="simple" ...>
此外,您需要将form-close-validate.ftl
的内容从xhtml
主题复制到form-close.ftl
主题中的simple
。
正如您所看到的,有很多变通方法可以使其正常工作。 IMO如果您想使用javascript验证和simple
表单元素外观,请在xhtml
标记中使用<s:form>
主题,并在表单元素中设置simple
主题。