2

当应用theme="simple"到我的 Struts 2 表单标签时,JavaScriptvalidateForm_<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>

  • 为了让 Struts 生成validateForm_<formName>函数,是否需要包含一些特定的内容(类似于添加<s:fielderror />带有简单主题的标签)?
  • 我找不到任何“官方”文档和对这个自动生成的 JS 函数的引用,主要是因为它的名称是动态的。
4

1 回答 1

0

未经测试,但尝试向 JSP 添加两个 javascript-s。

<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.ftlxhtml主题form-close.ftlsimple

正如您所看到的,有很多解决方法可以使其正常工作。IMO,如果您想使用 javascript 验证和表单元素的外观,请在标签中simple使用xhtml主题并在表单元素中设置主题。<s:form>simple

于 2013-08-12T12:43:38.110 回答