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

时间:2015-12-23 09:39:41

标签: forms jsp struts2 struts-tags

我目前正在使用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是前一个请求的命名空间,因此似乎属性命名空间无效。我知道标签是“名称空间感知”Is prefix needed for Struts2 namespace in forms and links?但我想指定一个不同的标签。

1 个答案:

答案 0 :(得分:1)

TL;博士

也可以为action标记添加一些<s:form>属性。

说明:

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

示例:

当前请求: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