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
我目前正在使用 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