Struts2 表单标记中的属性名称空间不起作用

Attribute namespace in the Struts2 form tag not working

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

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

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

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

其中y是之前请求的namespace,所以好像attribute namespace没有作用。我知道标签是 "namespace aware" 但我想指定一个不同的标签。

tl;博士

也将一些 action 属性添加到您的 <s:form> 标签。

解释:

如果 <s:form> 标签中没有 action 属性,则表单操作 url 默认为当前请求 url。即动作和命名空间来自当前请求。这样做的副作用是 <s:form> 标签上的 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