我有很多目的地(比如150+),每个目的地有两种不同的变种:
我为每个变体生成了一个html。例如:
通用格式:
这些文件中的每一个都写入/seo/Destination/
如何将给定的URL映射到struts 2中的这些文件:
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
我能想到的一种方法是生成与(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>
..等等
还有其他(更好)的方法吗?
答案 0 :(得分:3)
在我看来,一种qquick方式是使用通配符映射,Struts2有一种方式即Wildcard,它似乎更适合你。
随着应用程序的大小增加,动作映射的数量也会增加。通配符可用于将类似的映射组合成一个更通用的映射。
类似
<action name="List*s" class="actions.List{1}s">
<result>list{1}s.jsp</result>
</action>
有关详细信息,请参阅文档
答案 1 :(得分: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>
. . . . . .