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 に 2 つの JavaScript を追加してみてください。

<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.ftlsimple

ご覧のとおり、これを機能させるには多くの回避策があります。simpleJavaScript検証とフォーム要素の外観を使用する場合は、IMOタグでxhtmlテーマを使用し、フォーム要素でテーマを設定します。<s:form>simple

于 2013-08-12T12:43:38.110 に答える