Struts2 Struts 2:如何正确地执行其他操作?

Struts2 Struts 2:如何正确地执行其他操作?,struts2,friendly-url,Struts2,Friendly Url,我正在开发一个Struts 2项目,其中需要实现2个友好的URL。由于我的2个URL需要类似于URL/name/id和URL/id/title,因此我发现管理这一点的唯一方法是使用第一步操作来处理请求,然后转发到正确的操作1或操作2,如下所示: <action name="/*/*" class="web.ProcessRequestAction"> <param name="firstParam">{1}</param> <

我正在开发一个Struts 2项目,其中需要实现2个友好的URL。由于我的2个URL需要类似于URL/name/idURL/id/title,因此我发现管理这一点的唯一方法是使用第一步操作来处理请求,然后转发到正确的操作1或操作2,如下所示:

<action name="/*/*" class="web.ProcessRequestAction">
       <param name="firstParam">{1}</param>
       <param name="secondParam">{2}</param>
       <result name="action1" type="chain">Action1</result>
       <result name="action2" type="chain">Action2</result>
</action>
<action name="Action1" class="web.Action1" method="execute">
       <result name="success">/WEB-INF/content/Action1.jsp</result>     
       <result name="input">/WEB-INF/content/Action1.jsp</result>
       <result name="error">/WEB-INF/content/Action1.jsp</result>
</action>

{1}
{2}
行动1
行动2
并将这两个动作定义为:

<action name="/*/*" class="web.ProcessRequestAction">
       <param name="firstParam">{1}</param>
       <param name="secondParam">{2}</param>
       <result name="action1" type="chain">Action1</result>
       <result name="action2" type="chain">Action2</result>
</action>
<action name="Action1" class="web.Action1" method="execute">
       <result name="success">/WEB-INF/content/Action1.jsp</result>     
       <result name="input">/WEB-INF/content/Action1.jsp</result>
       <result name="error">/WEB-INF/content/Action1.jsp</result>
</action>

/WEB-INF/content/Action1.jsp
/WEB-INF/content/Action1.jsp
/WEB-INF/content/Action1.jsp
然而,如果我调用URL/parameter/parameter,然后在ProcessRequestAction上返回“Action1”,我将得到Action1.jsp(如预期的那样),但看起来很凌乱,好像所有CSS都丢失了。 首先,我的方法正确吗?如果是这样,我做错了什么,我能改进什么


提前到达坦斯克

至于CSS不工作的原因,我们无法知道——JSP就是JSP,它遵循正常的JSP/HTML规则

至于第一个问题:我建议不要使用动作链接;这是积极劝阻,通常只是把事情搞得一团糟

如果不了解更多关于应用程序体系结构的信息,就很难给出有针对性的建议,但您可能会发现这些建议很有用


即使不能立即使用,您也可以使用更符合您实际需要的
PatternMatcher
ActionMapper
来玩游戏——实现将取决于多种因素,特别是名称、id和,和标题URL组件。

以下是一些资源,可以帮助您获得所需的干净URL:


使用这种方法,我是否可以通过简单地使用不同的参数名来区分要处理的操作,例如Action1上的@Namespace{/{ID}/{name}”)和Action2上的@Namespace{/{title}/{ID}”)呢?我对此表示怀疑,因为在不知道正则表达式(或其他方法)的情况下,无法区分这两种格式--这就是为什么我指出了
PatternMatcher
ActionMapper
定制选项。