JSP / servlet / IE组合不会在Enter上提交表单详细信息

时间:2010-03-02 23:33:27

标签: java html internet-explorer jsp

使用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有关!)。

2 个答案:

答案 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"添加“隐藏”属性。