You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RequestDispatcher转发后表单仅存首个单词,其余内容丢失问题

问题排查:RequestDispatcher转发后表单内容仅保留首个单词

嘿,我发现你遇到的表单内容截断问题根源很明确——是HTML属性的引号使用错误导致的!

核心问题:未给value属性加引号

看你的JSP代码里的input标签,比如这一行:

<input name="commandfile" type="text" size="10" value=${commandfile}>

当commandfile的值包含空格(比如sample test.txt)时,HTML解析器会把空格后的test.txt当成一个新的HTML属性,而不是value的一部分。这就导致最终页面上只会显示第一个单词,剩下的内容被浏览器忽略了。

快速修复:给所有value属性添加双引号

把所有EL表达式包裹的value值都用双引号括起来,修改后的JSP代码如下:

<div> <b>${reply}</b> </div>
<form action="runCommand" method="post" name="myform">
File:<input name="commandfile" type="text" size="10" value="${commandfile}">
</input><br />
Command:<input name="commandinput" type="text" size="10" value="${commandinput}">
</input><br />
No delete File: <input type="checkbox" name="no_del_file" value="${no_del_file}" ><br>
<input name="submit" type="submit" value="Submit" />
<input name="Reset" type="reset" value="Reset" />
</form>

这样浏览器就会把EL表达式返回的完整字符串作为value的内容,不管里面有没有空格或者特殊字符。

额外优化建议

  1. 编码一致性保障:虽然你已经在Servlet里设置了UTF-8编码,但建议在JSP页面开头也加上编码声明,避免特殊字符乱码:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
  1. 复选框选中状态修复:当前的复选框只设置了value,但转发后无法保留选中状态。如果需要记住用户是否勾选,建议改成这样:
No delete File: <input type="checkbox" name="no_del_file" value="true" ${no_del_file != null ? 'checked' : ''} ><br>

当no_del_file参数存在时,复选框会自动保持选中状态。

内容的提问来源于stack exchange,提问作者Viking

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:23:01