使用IE 7,JDK 1.6和Sun Web服务器7。
在jsp表单中,我们有:
<input type="text" name="id" maxlength="20" />
<input ... type="submit" name="send" value="Send"/>
即。一个文本框和一个“提交”按钮(称为发送)。
并且servlet具有:
if (request.getParameter("send") != null && request.getParameter("send").trim().length() > 0) { ... }
使用Fiddler和IE,我们可以看到当我们填充id文本框并按Enter键时会发送以下内容:
ID = 123456
但是,使用Fiddler和IE,我们可以看到当我们填充id文本框并单击Send按钮时会发送以下内容:
用户id = 123456&安培;送=发送
最终结果是有效地点击Enter键不会做任何事情。
在其他jsp页面上,例如我们有:
<input type="text" name="id" maxlength="20" />
<input ... type="submit" name="submitId" value="Submit"/>
并且servlet具有:
if (request.getParameter("submitId") != null && request.getParameter("submitId").trim().length() > 0) { ... }
使用Fiddler和IE,我们可以看到两种情况都发送了以下内容:
ID = 123456&安培; submitId =提交
所以在我们看来,这种行为只在IE上展示,其中“提交”按钮不称为“提交”?
在Firefox 3.6上重新运行测试表明行为是正确的,两种情况都是相同的。
有关让IE正常工作的建议吗?
(注意:我搜索过类似的问题,但与此相关的问题主要与ASP有关!)。
答案 0 :(得分:2)
对于只有一个输入字段的表单,这确实是另一个IE异常。唯一可靠的解决方法是添加第二个输入字段(!)。您可以使用CSS隐藏它。不,type="hidden"
无效。
<input type="text" name="id" maxlength="20" />
<input type="text" style="display: none;" />
<input type="submit" name="send" value="Send"/>
答案 1 :(得分:0)
为什么在JSP中检查request.getParameter("submitId")
实际上submitId是提交按钮的名称?
根据我的经验,我从未检查过提交按钮的值。我只使用该按钮来触发表单提交,并且通常只对检索其他表单参数的值感兴趣。
如果要按提交按钮的名称区分提交方法,可能需要尝试使用input type="hidden"
添加“隐藏”属性。