【问题标题】:Attribute namespace in the Struts2 form tag not workingStruts2 表单标签中的属性命名空间不起作用
【发布时间】:2015-12-23 09:39:40
【问题描述】:

我目前正在使用 Struts2 (2.3.7),我正面临以下问题。
当我在我的 jsp 的表单标签中指定命名空间 /x 时:

<%@ taglib prefix="s" uri="/struts-tags"%>
<s:form namespace="/x">
    <s:submit action="z" />
</s:form>

生成的 html 表单标签包含与声明的x 不同的y

<form action="/contextRoot/y/z.action" method="post"> 

其中y是上一个请求的命名空间,所以看起来属性命名空间没有作用。我知道标签是“命名空间感知”Is prefix needed for Struts2 namespace in forms and links?,但我想指定一个不同的标签。

【问题讨论】:

  • 在您的表单中也添加一些action
  • @AleksandrM 好的,现在可以了。所以命名空间属性不像我预期的那样工作。它用于其他用途?
  • z.action 在两个命名空间上是否具有相同的名称?
  • @AndreaLigios:这让我想起了我忘了回答答案中的问题。 :)
  • @AndreaLigios 对不起,我不明白你的问题。 html 内容被称为 s:submit。谢谢你注意到我的错误。据此,我将编辑问题。

标签: forms jsp struts2 struts-tags


【解决方案1】:

tl;博士

也将一些action 属性添加到您的&lt;s:form&gt; 标记中。

解释:

如果&lt;s:form&gt; 标记中没有action 属性,则表单操作网址默认为当前请求网址。即动作和命名空间来自当前请求。这样做的副作用是&lt;s:form&gt; 标签上的namespace 属性被简单地忽略了。

例子:

当前请求:app/some_namespace/some_action

还有形式:

<s:form namespace="/x">
    <s:submit action="z" />
</s:form>

将为表单 url 生成类似的内容:

app/some_namespace/some_action

对于提交按钮:

app/some_namespace/z

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    相关资源
    最近更新 更多