我目前正在使用 Struts2 (2.3.7),但遇到以下问题。
当我在 jsp 上的表单标记中指定 namespace /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?但我想指定一个不同的。
最佳答案
tl;博士
放一些action
归因于您的<s:form>
标签也是如此。
说明:
如果没有action
<s:form>
中的属性标签,然后表单操作 url 默认为当前请求 url。即操作和命名空间来自当前请求。这样做的副作用是namespace
属性 <s:form>
标签被简单地忽略。
示例:
当前请求:app/some_namespace/some_action
形式:
<s:form namespace="/x">
<s:submit action="z" />
</s:form>
将为表单网址生成类似的内容:
app/some_namespace/some_action
提交按钮:
app/some_namespace/z
关于forms - Struts2表单标签中的属性命名空间不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34432590/