0

ワイルドカードマッピングに関するStrutsマニュアルを読み、いくつかの例を自分でテストすることにしました。次のことを示すアクションがあります。

<action name="**" method="getPerson" class="PersonActionBean">
      <result>/person/view.jsp</result>
</action>

これにより、私は過去のどこにでも行き、理解できる範囲/personで見ることができます。view.jspだから私が今やろうとしているのは、クラス内/person/jack/blackgetPersonメソッドPersonActionBeanがURLフィールドを取得し、jack名前blackと名前でDBを検索してから、で使用されるオブジェクトにデータを入力することです。view.jsp

私の懸念は、検索機能ではなく、メソッドからURLのフィールドを取得することgetPersonです。jackURLを取得してURLから取得し、メソッドblackで使用するにはどうすればよいですか?getPerson

Struts2.1.8.1を使用しています

4

2 に答える 2

2

方法1-struts2-conventionプラグインを使用

struts.xml

<constant name="struts.patternMatcher" value="namedVariable"/>

PersonAction.java

    import org.apache.struts2.convention.annotation.Namespace;
    ...
    @Namespace{"/persons/{param1}/{param2}");
    public class PersonActionBean exends ActionSupport {
        private String param1;
        private String param2;
        // getter and setter
    }

を呼び出す場合はpersons/jack/black、paramsをに設定する必要がありますparam1 = jackparam2 = black

方法2-struts2-conventionプラグインなし

PersonAction.java

public class PersonActionBean exends ActionSupport {
    private String param1;
    private String param2;
    // getter and setter
}

person.xml

<package name="person" namespace="/person" extends="website">
    <action name="*/*" method="getPerson" class="PersonActionBean">
            <param name="param1">{1}</param>
            <param name="param2">{2}</param>
            <result>/person/view.jsp</result>
    </action>   
</package>

struts.xml

<package name="website" namespace="/" extends="struts-default, json-default">
     ...
    <constant name="struts.enable.SlashesInActionNames" value="true"/>
    <constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/>
     ...
</package>

参考文献

AdvancedWildcardをチェックしてください

于 2012-09-03T13:08:38.443 に答える
-1

<s:Property>タグを使用

プロパティタグを探してみませんか。プロパティタグを介してこれらの名前を送信した方がよいでしょう。

<s:url action="PersonActionBean" var="urlPersonActionBean" >
    <s:param name="name1">no</s:param>
    <s:param name="name2">no</s:param>
</s:url>

<a href="<s:property value="#urlPersonActionBean"/>"  target="content">

私はこれがあなたを助けると確信しています...

于 2012-09-03T12:55:46.183 に答える