質問

デフォルトの気持ちを抱いて欲しいと思いstruts2のアプリを楽しみにアクション:

<?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>

    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="false" />

    <package name="myApp" namespace="/myApp" extends="struts-default">


        <action name="Login_*" method="{1}" class="myApp.SessionManager">
            <result name="input">/myApp/Login.jsp</result>
            <result type="redirectAction">Menu</result>     
        </action>

    </package>

    <package name="default" namespace="/" extends="struts-default">
        <default-action-ref name="index" />
        <action name="index">
            <result type="redirectAction">
                <param name="actionName">Login_input.action</param>
                <param name="namespace">/myApp</param>
            </result>
        </action>
    </package>


</struts>

私の話SessionManager.入力の()が呼びかけられていSessionManager.execute().

役に立ちましたか?

解決

だいたい一般的に公開 入力() 方法。最も基本的かつ代表的なシナリオのためのアクションは:

  • このアクションはシンプルに"何か"(一)は、この行動が必要ユーザー入力します。
  • の行動がよりしながら、何らかの方法 execute()
  • 場合の行動にかんするものでreturs 成功.このように結果を参考にJSPのページです。
  • 場合の行動なのユーザー入力がそれほど広くはありませんが、でも不十分であったい)を返します 入力.このトリガーの"入力フォーム"JSPのユーザーのデータを(再)努力します。

現在、この基本シナリオできるコードが日々の

1)異なる二つのマッピングの入力フォーム、その他の執行

<!-- default action class: execute does nothing, returns SUCCES -->
<action name="ActionXXXShowForm"> 
                <result>/myApp/XXXForm.jsp</result>
</action>

<action name="ActionXXX" class="myApp.XXXAction"> 
                <result name="input">/myApp/XXXForm.jsp</result>
                <result>/myApp/XXXDone.jsp</result>
</action>

2)一つだけマッピング

<action name="ActionXXX"  class="myApp.XXXAction"> 
                <result name="input">/myApp/XXXForm.jsp</result>
                <result>/myApp/XXXDone.jsp</result>
</action>

両方とも非常に類似す特別の場合におい編集の検証).どちらの場合も、私たちはして"struts方法"にアクション(実行はいいとしての実践的活動のみ"はある。がの場合は、したことになる場合にはデータは、ゴを発するエラーメッセージをためる場合があります。

例:例1:

public class XXXAction extends ActionSupport {
    ...    
    public String execute() throws Exception {
        if(! inputOk()) return INPUT;
         // .. do your stuff
        return SUCCESS;
    }

    private boolean inputOk() {
       // ... check your inputs - sort of programatic validation
       if( surname == null ) addActionError("no surname");
       // .... more checks
       return ! hasActionErrors());
    }

}

場合には2つの内容を変更し若干:

public class XXXAction extends ActionSupport {
    ....    
    public String execute() throws Exception {
        if( emptyInput() ) return INPUT;  // no error messages in this case
        if(! inputOk()) return INPUT;
         // .. do your stuff
        return SUCCESS;
    }

    private boolean inputOk() {
       // same as before
    }

    private boolean emptyInput() {
       // detect no input was sent. do not emit errors herer
    }
}

他のヒント

あなたは、JSPからアクションを呼び出すと、

は、デフォルトの方法が実行されます()。あなたが別のメソッドを呼び出したい場合は、「」=属性法によりスペックことができます。

<s:url action="SessionManager" method="input"/>

属性方法が他のタグで一般的です。

あなたは<s:a...タグを使用している場合、あなたは離れてデフォルトから意図したメソッドを呼び出して実行することができません()メソッド。代わりに<s:a...タグの、あなたは、IDと<s:url...タグを使用してアクションを定義し、それを用いた通常のHTMLアンカータグつまりを呼び出す必要があります。、 <a href=${<<id>>}いますが、struts.xmlでの方法や、あなたの<action... method="..."句のmethod属性を使用してstruts.xmlファイルに含まれている他のXML設定ファイルを指定する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top