0

struct2.0は初めてです。インターセプターを使用して最初の小さなアプリケーションを実行しようとしていますが、excecuteメソッドに対してのみ検証を使用したいと考えています。

ただし、populateメソッドとexcecuteメソッドの両方の前にvalidate関数を呼び出します。誰かが私が欠けているものを教えてもらえますか?

以下は私のSampleActionクラスです。

package demo;

import com.opensymphony.xwork2.ActionSupport;

public class SampleAction extends ActionSupport {

private static final long serialVersionUID = 1L;
    public void validate()
    {
        System.out.println("validate() method called");
    }

    public String populate()
    {
        System.out.println("populate() method called");
        return "populate";
    }

    public String execute()
    {
        System.out.println("execute() method called");
        return SUCCESS;
    }
}

そして以下は私のstruct.xmlファイルです

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <package name="default" extends="struts-default">       
        <action name="*Sample" method="{1}" class="demo.SampleAction">
        <interceptor-ref name="defaultStack" >
        <param name="validation.excludeMethods"> populate</param>
        <result name="populate">/first.jsp</result>
        <result name="success">/success.jsp</result>
        </action>
    </package>
</struts>
4

1 に答える 1

2

excludeMethodsパラメータを宣言する部分を次のように変更します。

<interceptor-ref name="defaultStack">
    <param name="validation.excludeMethods">populate</param>
</interceptor-ref>

アップデート

ValidationInterceptorjavadocから

alwaysInvokeValidate-デフォルトはtrueです。trueの場合、validate()メソッドは常に呼び出されますが、そうでない場合は呼び出されません。

programmatic-デフォルトはtrueです。trueで、アクションがValidateableの場合、validate()、および「validate」で始まるすべてのメソッドを呼び出します。

宣言型-デフォルトはtrueです。xmlまたはアノテーションに基づいて検証を実行します。

Struts2http://struts.apache.org/2.x/docs/validation.htmlの検証についてもお読みください

于 2012-10-26T14:37:18.147 に答える