0

私には多くの目的地(たとえば150以上)があり、各目的地には2つの異なるバリエーションがあります。

  • A
  • B

これらのバリアントごとにhtmlを生成しました。例:

  • NewYork-A.html
  • NewYork-B.html
  • SanFrancisco-A.html
  • SanFrancisco-B.html
  • ラスベガス-A.html
  • LasVegas-B.html..。

一般的な形式は次のとおりです。

  • 宛先-A.html
  • 宛先-B.html

これらの各ファイルはに書き込まれます/seo/Destination/

Struts 2のこれらのファイルに特定のURLをマッピングするにはどうすればよいですか?

www.mysite.com/NewYork-Tourism=> www.mysite.com/seo/Destinations/NewYork-A.html AND www.mysite.com/NewYork-Travel=> www.mysite.com/seo/Destinations/NewYork-B.html

ジェネリック:

www.mysite.com/Destination-Tourism=> www.mysite.com/seo/Destinations/Destination-A.html

www.mysite.com/Destination-Travel=> www.mysite.com/seo/Destinations/Destination-B.html


これを行うことを考える1つの方法は、(destination * Variant_types)と同じ数のアクションを生成し、それらのそれぞれの結果を適切なhtmlファイルにマップすることです。このようなもの:

<action name="NewYork-Tourism">
    <result name="success">/seo//Destination/NewYork-A.html</result>
</action>
<action name="NewYork-Travel">
    <result name="success">/seo//Destination/NewYork-B.html</result>
</action>

.. 等々

これを行う他の(より良い)方法はありますか?

4

2 に答える 2

3

私に思われる簡単な方法の1つは、ワイルドカードマッピングを利用することです。Struts2には、ワイルドカードという方法があります。

アプリケーションのサイズが大きくなると、アクションマッピングの数も大きくなります。ワイルドカードを使用して、同様のマッピングを1つのより一般的なマッピングに組み合わせることができます。

何かのようなもの

<action name="List*s" class="actions.List{1}s">
  <result>list{1}s.jsp</result>
</action>

詳細については、ドキュメントを参照してください

于 2012-08-23T06:39:26.933 に答える
0

また、逆の方法でも実行できます。アクションクラスのpublic String execute()メソッドでは、他の場合はネストします。たとえば、最初のifステートメントがニューヨークでユーザーがTourismを選択した場合、値「New-York-Tourism」が返されます。

struts.xmlの場合はこれ

<action name="Destinations" method="execute" class="Your Class Location">
<result name="New-York-Tourism">/seo//Destination/NewYork-Tourism.html</result>
<result name="New-York-Travel">/seo//Destination/NewYork-Travel.html</result>
. . . . . . 

于 2012-08-23T06:47:52.840 に答える