【问题标题】:struts 2.2.1 appends ".action" suffix to namestruts 2.2.1 将“.action”后缀附加到名称
【发布时间】:2010-10-13 19:34:03
【问题描述】:

我的项目将 struts 的版本从 struts-2.1.8.1 更改为 struts-2.2.1。 我们不使用后缀“.action”来命名,迁移后出现。对于旧版本的 html 代码如下所示:

<form id="Login" name="Login" action="/fm2/Login" method="post"> 

但新的 struts 呈现相同的形式:

<form id="Login" name="Login" action="/fm2/Login.action" method="post"

因此添加了 .action 的区别。新版本有什么问题?

【问题讨论】:

    标签: struts2


    【解决方案1】:

    这是默认扩展名(也应该在 2.1.8.1 中)。

    您可以在 struts.xml 中更改它:

    <constant name="struts.action.extension" value="whatever" />
    

    【讨论】:

      【解决方案2】:

      从 struts-2.1.8.1 更改为 struts-2.2.1 时,我遇到了类似的问题。 Struts-2.2.1 将自动为redirectAction 结果添加“.action”扩展名。 这很烦人。

      【讨论】:

        【解决方案3】:

        这没有改变,AFAIK。一定要了解“struts action”和"action attribute of a HTML FORM" element的区别

        通常,要在 Struts2 中呈现 FORM 标记,您将使用 (Struts2) form tag - 它的 action 属性对应于 Struts2 动作的名称,对应于不带后缀(默认为'.action',但你可以改变它)

        所以,Struts2 标记

        <s:form action="/fm2/Login">
        

        通常会产生 HTML 输出

        <form action="/fm2/Login.action">
        

        【讨论】:

        • 看不到逻辑。两个不同版本的 struts 产生不同的 HTML(!) 代码。所以我没有混合 HTML 的动作和形式,而是用新的后缀获得一些副作用。
        • “两种不同版本的 struts 产生不同的 HTML(!) 代码。”不,它们不会 -AFAIK。如果您发现其他情况,请向我们展示一个示例。
        • 仔细阅读我的问题。我已经提供了示例。项目源没有改变,只有struts的版本。
        • 您没有提供生成该 html 的 jsp 的代码,也没有提供相关的配置部分 (struts.action.extension)
        • 还有一个更基本的事情:你说“我们不使用后缀“.action”来命名”。那么你在你的网址中使用什么后缀?一个空的?那必须在某处进行配置。 (如果不是,“.action”是默认值)
        【解决方案4】:

        我从我的 web-inf/lib 中删除了 struts2-convention-plugin-2.1.8.1 jar,它开始正常工作。 希望这可以帮助... 干杯...

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-05-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多