今天为处理防止用户刷新页面二重复提交数据使用了重定向的方法,因为只用了JSTL没用Struts1.x自带的标签,所以没有用Token,因此采用这种方式处理重复提交.
当然af.setRedirect(true)后http得到新的请求request也就没有参数了.
我要转到的是另一个Action来处理,而那个Action要获得一些参数才会执行一些功能,如查询数据等..
所以我这么做:
ActionForward af = new ActionForward();
af.setPath("webUrl.do?command=anQuestion&id=" + id + "&che=" + che);
af.setRedirect(true);
return af;
这样之后发现没有得到che的值,而且提交时浏览器响应很慢,后来发现是只为che是中文,当是中文时IE8是得不到che的值,FF3.09中得到的是乱码,英文则没有事.
所用的所有编码全是UTF-8的,这什么setPath()会出现如此奇怪的问题?而且在不同浏览器表现不一??我知道FF在处理URL时用的是UTF-8,可是IE这何得不到值,响应为何如此慢??
当然af.setRedirect(true)后http得到新的请求request也就没有参数了.
我要转到的是另一个Action来处理,而那个Action要获得一些参数才会执行一些功能,如查询数据等..
所以我这么做:
ActionForward af = new ActionForward();
af.setPath("webUrl.do?command=anQuestion&id=" + id + "&che=" + che);
af.setRedirect(true);
return af;
这样之后发现没有得到che的值,而且提交时浏览器响应很慢,后来发现是只为che是中文,当是中文时IE8是得不到che的值,FF3.09中得到的是乱码,英文则没有事.
所用的所有编码全是UTF-8的,这什么setPath()会出现如此奇怪的问题?而且在不同浏览器表现不一??我知道FF在处理URL时用的是UTF-8,可是IE这何得不到值,响应为何如此慢??
解决方案 »
- 分页查询时的lazy问题
- Struts2中的验证问题
- 刚刚学习hibernate,难道hibernate不需要写操作语句?
- action 如何获得jsp页面上的长字段(2000字以上)
- jsp???
- myeclipse6.01怎么注册不 了?
- 大家如何做数据导出的?
- 大虾们帮忙看看这个错误是怎么回事,如何解决?
- HibernateTemplate3连接数据库SqlServer2005不稳定
- 后台用JB实现,前台用DEPHI,前台的消息如何发送到后台接收
- java.lang.NullPointerException错哪了?
- spring中如果dao为非单例,singleton="false";发现bean不能被回收导致内存溢出,怎么解决
统一编码!
顶!
path = URLEncoder.encode(path,"UTF-8");
已经有过虑器了,已经统一编码了..
而且这样做直接报URL不存在了..
你这样是页面重定向了 不是同一个请求了 取不到要流浪的url所以超时
你注意我path后能参数,而且是一个Action,所以URL就是带参数值的path,这样一来就会转向action,当然会得到值,现在问题是中文为什么得不到..
if (value != null) {
uri.append(params == 0 ? '?' : '&')
//URLEncoder.encode(value, "UTF-8")是否使用看着办吧!
.append(name).append('=').append(value); params++; } else {
String[] values = pageContext.getRequest().getParameterValues(name); if (values != null) {
for (int i = 0, l = values.length; i < l; i++) {
value = values[i];
uri.append(params == 0 ? '?' : '&')
//URLEncoder.encode(value, "UTF-8")是否使用看着办吧!
.append(name).append('=').append(value); params++;
}
}
}
}对tomcate 配置URL编码!
根据LZ的情况;我的方案&che=" + che去掉是在request中放一个值是把就和 查询输入框中查询 而查询的关键字依然保留页面刷新(没有应查询而为空)是一样的道理
<%
String data ="";
if (request.getParameter("flag")!= null) {
data=String.valueOf((Integer.valueOf((String)request.getParameter("flag")))+1);
}
if(Integer.parseInt(request.getParameter("flag"))>=1){
//重复提交了
}
%>
<input type="hidden" name="flag" value="<%=data%>">//flag为form的一个属性初始为0
不是从表单得的值,是从业务处理那得的che..
//p--为跳到该页面之前Session里的一个key值 <c:set var="falg" value="${p}" scope="session"/>
//提交一次 sessionScope.falg设置 二次判断如下
------------------------------------------------------<c:if test="${sessionScope.falg}!=null || sessionScope.falg}!=''}">
//不提交
</c:if><c:if test="${sessionScope.falg==null || sessionScope.falg==''}">
<c:set var="falg" value="${p}" scope="session"/>
//提交
</c:if>
欢迎深圳的JAVA程序员加入,共同探讨技术与工作、项目合作、共享信息、结交朋友
加入请输入验证信息:SZJP
有没有详解啊..
深入讲解之类的..