0

struts2 + Jquery プラグインを使用して Web アプリケーションを作成しています。
jquery プラグインの sj:submit タグを使用して AJAX フォーム送信を使用しています。sj:submit で「validate= true」タグを使用してフォーム (AJAX) を検証しているときに問題に直面しています。以下は sj:submit タグです。

<sj:submit value="ADDUSERNOW" onBeforeTopics="before" onSuccessTopics="success" 
    onErrorTopics="errorState" onCompleteTopics="complete" targets="userMgmntDiv" validate="true"/>

私の html head セクションには、以下の検証に必要な 2 つの js ファイルへの参照も含まれています。

<script language="JavaScript" src="${pageContext.request.contextPath}/struts/utils.js" type="text/javascript"></script>
        <script language="JavaScript" src="${pageContext.request.contextPath}/struts/xhtml/validation.js" type="text/javascript"></script>  

検証 xml を以下に示します。これは ActionClass-validation.xml という名前で、検証が呼び出されるクラスと同じパッケージに配置されます。

        <validators>
            <field name="userModel.userName">
                <field-validator type="requiredstring">
                    <message>UserName Is Required</message>
                </field-validator>
            </field>
        </validators>

フォームが送信された後、検証はトリガーされず、実行が続行され、struts2 アクション クラスが呼び出されます。
ここに欠けているものはありますか? 私はたくさん検索しましたが、答えが見つかりませんでした

<action class="addUserAction" method="addUser">
    <interceptor-ref name="jsonValidationWorkflowStack"/>
    <result>addUser.jsp</result>
</action>

上記に加えて、上記のタスクを達成するためにSpring + struts2 + hibernateを使用しています。struts2-jason wikiページに示すように例を試してみると、次のようにエラーが発生します:AddUserActionという名前のクラスでアクションが見つかりません(これはspring-beans.xml の bean) バリデーターインターセプターを呼び出すとエラーがスローされるようです。アクション クラス AddUserAction の検証に使用される注釈をコメント アウトすると、このエラーは消え、ページは正常に読み込まれます。以下は私の質問です:1)struts2コンベンションプラグインと一緒に春を使用するにはどうすればよいですか?これは、コンベンション プラグインが独自のメカニズムを使用して URL とアクションをマッピングするためです (注釈またはデフォルトの動作を使用)。2) 以前は、struts.xml ファイルを URL からアクションへのマッピングに使用でき、注釈を検証に使用できると予想していました。

4

2 に答える 2

1

struts2ajax validationは、Dojo によってネイティブに提供されるクライアント側の検証です。Struts2 Ajax 検証のドキュメントは次のとおりです。struts2-jquery pluginを使用してこの機能を提供しますjsonValidationWorkflowStack。次のように使用できます

于 2012-09-17T14:09:13.647 に答える
-1

私はもう試した。とてもよく効きます。ただし、フォームにアップロード用の入力ファイルがある場合、ajax 検証は機能しません。

于 2012-10-02T11:33:46.780 に答える