1

私はstruts2を使用しており、URLがwww.myweb.com/index.actionではなくwww.myweb.com/indexのように見えるように構成されています

しかし、今私が直面している問題は、どのように struts.xml ファイルにマップし、struts1 のようにリクエスト パラメータを取得する必要があるかということです。

<action path="/profile/*"
type="net.viralpatel.struts.cleanurl.ProfileAction"
parameter="{1}">
<forward name="success" path="/profile.jsp" />
<forward name="fail" path="/profile.jsp" />
</action>

文字列パラメータ = mapping.getParameter();

したがって、struts2 で www.myweb.com/index/p=2 www.myweb.com/index/biz/name をヒットすると、ここで biz と name は 2 つのパラメーターになります/ www.myweb.com/index/biz/name/23 /ここでは、biz & name & 23 がパラメータです/

ありがとう

4

2 に答える 2

2

ワイルドカード パターンを使用してパラメーターを渡すことができます。

<action name="/profile/*" class="net.viralpatel.struts.cleanurl.ProfileAction">
 <param name="id">{1}</param>
<result>
  <param name="location">/profile.jsp</param>
  <param name="id">{1}</param> 
</result>
 </action>

名前付きパラメータを使用することもできます

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


@Namespace{"/users/{userID}");
public class ProfileAction exends ActionSupport {
private Long userID;
public void setUserID(Long userID) {...}
}

リクエスト URL が/users/10/detailの場合、ProfileActionが実行され、そのuserIDフィールドが10に設定されます。

アクション名の後のパラメーター

URL でパラメーターを使用するには、アクション名の後に、これが設定されていることを確認してください。

 <constant name="struts.enable.SlashesInActionNames" value="true"/>
 <constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/>

次に、アクション マッピングは次のようになります。

 <package name="edit" extends="struts-default" namespace="/edit">
 <action name="/profile/*" class="net.viralpatel.struts.cleanurl.ProfileAction">
    <param name="id">{1}</param>
    <result>/profile.jsp</result>
 </action>   
 </package>

のような URL/edit/profile/123が要求されると、ProfileActionが呼び出され、その「id」フィールドが123に設定されます。

于 2016-06-14T06:59:52.010 に答える
0

patternMatcher を使用してください。ワイルドカードは他のことを行うためのものです。

http://struts.apache.org/2.x/docs/wildcard-mappings.html

必要に応じて、REST プラグインを使用することも、正規表現マッチャーを使用することもできます。

于 2012-05-26T17:57:52.120 に答える