这是我的代码:
<s:iterator value="ChapterTreeList" id="chapterTree">
...
<s:url
id="deployChaptersUrl"
action="ajaxDeployChapter"
includeContext="false">
<s:param
name="nodeId"
value="%{#chapterTree.nodeId}"/>
</s:url>
<s:form
id="deployChapters%{#chapterTree.nodeId}"
action="%{deployChapterUrl}"
theme="simple"
method="POST">
</s:form>
...
</s:iterator>
我期望有多种形式,如下所示:
<form
id="deployChapters27623"
name="deployChapters27623"
action="/path/to/ajaxDeployChapter.action?nodeId=27623" <-- nodeId here
method="POST">
</form>
但我得到的是这样的表格:
<form
id="deployChapters27623"
name="deployChapters27623"
action="/path/to/ajaxDeployChapter.action" <-- nodeId is missing here
method="POST">
</form>
Struts 2.3.15.1
最佳答案
POST
HTTP 方法将参数发送到请求正文中。这是支持将参数放入查询字符串的 POST
和 GET
之间的区别。
因此,您甚至不应该尝试将查询字符串作为 POST 的一部分发送。无论如何它都不会起作用。如果您需要发送 nodeId
,您有 2 个选择;
- 将其作为 URL 路径发送:
/path/to/ajaxDeployChapter.action/27623
。 - 创建隐藏表单字段
nodeId
并填充其值。
关于java - 为什么生成的 URL 中缺少我的参数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22687758/