如何使用theme =“simple”调用Struts 2客户端验证?

时间:2013-08-12 12:10:52

标签: validation java-ee struts2 themes client-side

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>

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

1 个答案:

答案 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主题。