0

我有很多目的地(比如 150 多个),每个目的地都有 2 个不同的变体:

  • 一个

我为这些变体中的每一个生成了一个 html。例如:

  • 纽约-A.html
  • 纽约-B.html
  • 旧金山-A.html
  • 旧金山-B.html
  • 拉斯维加斯-A.html
  • 拉斯维加斯-B.html ...

通用格式为:

  • 目的地-A.html
  • 目的地-B.html

这些文件中的每一个都被写入/seo/Destination/

如何将给定的 URL 映射到 struts 2 中的这些文件:

www.mysite.com/NewYork-Tourism=> www.mysite.com/seo/Destinations/NewYork-A.htmlwww.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


我能想到的一种方法是生成与 (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

在我看来,一种快速的方法是使用通配符映射,Struts2 有一种方法,即通配符,它​​似乎更适合您。

随着应用程序规模的增长,动作映射的数量也会增加。通配符可用于将相似的映射组合成一个更通用的映射。

就像是

<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 else。例如,第一个 if 语句是针对 New York 并且用户选择了 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 回答