工作中遇到的问题:关于form表单提交的问题--无action

今天在写一个JSP表单提交的时候,遇到了一个关于action为空时提交的问题,由于实际工作中的情况较复杂,但下面仅将问题的关键记录下来,以方便回忆。

首先表单如下:

<form name='frm1' method='post'>
<input type='text' name='age' value='23' />
<input type='button' value='提交' οnclick='frm1Submit()' />
</form>


可以看到,上面的frm1的action没写,因为这个页面上面还有一些内嵌的JAVA处理代码(这种方式很不好,不过由于这个系统较老,公司都是用这种方式,所以没有做改变),所以我本意就是要提交到本页面来进行处理,原本认为不写action就会提交到本页面来处理(这也是正确的,不过这个本页面和我想像中的本页面不同,这也是造成问题的根本原因,后面会说明)。

frm1的提交事件如下:

function frm1Submit(){
   document.frm1.submit();
}


对于一个查询很显然是要有分页的,所以下面还有一个分页面的内容(在实际中,这个分页是由代码生成器自动生成的,下面只简化)

每页显示的行数<select οnchange='changePageRecords()' >
<option value='5'>5</option>
<option value='10'>10</option>
</select>


而点击后会将页面的一些分页信息(比如当前页,每页的行数。。。加到本页面的URL后面然后重新赋值给location)。这时问题就出来了,每次我重新点击frm1的提交按钮时,在请求的request中总会把这些分页信息带过来(由于实际工作中这些分页信息中有一个不可以携带的参数,不然后影响本页面JAVA代码的处理),所以查询的结果总是出问题。

后来查了很久才发现问题的原因是如果form的action没有写,那么确实会提交到本页面,但是这个本页面是指当前的URL,而不是纯净的JSP页面。这两者有什么区别呢,比如说原本的JSP页面地址应该为http://localhost/myservice.jsp,但是由于之前的分页转发会导致分页后的当前URL变为http://localhost/myservice.jsp?pageInfo=xxx&currntPage=xxx,所以此时当再次提交表单是,就会把之前的一些分页信息携带到request中。

解决方案是明确的把form表单的action指定为你想要提交的地址,也就是纯净的本页面的URL(http://localhost/myservice.jsp)。所以应该将上的提交事件改为:

function frm1Submit(){
   document.frm1.action='myservice.jsp';
   document.frm1.submit();
}


这样问题就解决了,得到的教训是,千万不要省略form表单的action值,即使是要提交到本页面,也要写上action='myself',这样会避免出现上面的那种情况,当然也是由于我之前没有遇到过,现在分享给大家。





  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值