首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

struts的页面刷新有关问题,一个困扰了很久的有关问题,肯请大家帮忙

2012-02-03 
struts的页面刷新问题,一个困扰了很久的问题,肯请大家帮忙做的是翻页的数据显示,但是每次点击上一页或下一

struts的页面刷新问题,一个困扰了很久的问题,肯请大家帮忙
做的是翻页的数据显示,但是每次点击上一页或下一页,有时翻有时不翻,也就时并不是每次都进入struts的action里.
以前页做过类似的 "购物车 ",每次添加时,也是不是每次添加都进入struts的action里,有时添加错误,有时添加正确.
当点击按刷新按钮时,刷新页面都能出来正确的结果.但是每次刷新都重复执行上次的操作,这个也是我不想要得错误.

问题1.如何有效的解决每次不进入action里问题,让每次点击正确,并不是时进时不action进.

问题2.当点击刷新刷新按钮时,不让它自动增加,而是正确操作点击才增加.

////////这个时我得翻页的action.
public   ActionForward   execute(ActionMapping   mapping,   ActionForm   form,
HttpServletRequest   request,   HttpServletResponse   response)   {
//   TODO   Auto-generated   method   stub
int   perRows   =   10;
String   currPage   =   request.getParameter( "page ");
if   (currPage   ==   null)   {
Page   p   =   new   Page(1,   perRows,   "Orders ",
"OrderID,CustomerID,shipVia,shipName ",   "OrderID ",   " ",   " ");
ArrayList   arr   =   p.getArrayList();
if   (arr   !=   null)   {
request.setAttribute( "page ",   arr);
request.getSession().setAttribute( "pagelist ",   p);
}
arr=null;
p   =   null;
}   else   if   (currPage   !=   null)   {
if   ( "Next ".equals(currPage))   {
Page   p   =   (Page)   request.getSession().getAttribute( "pagelist ");
p.setCurrPage(p.getCurrPage()   +   1);
ArrayList   arr   =   p.getArrayList();
if   (arr   !=   null)   {
request.setAttribute( "page ",   arr);
request.getSession().setAttribute( "pagelist ",   p);
}
arr=null;
p=null;
}else   if( "Prev ".equals(currPage)){
Page   p=(Page)request.getSession().getAttribute( "pagelist ");
p.setCurrPage(p.getCurrPage()-1);
ArrayList   arr=p.getArrayList();
if(arr!=null){
request.getSession().setAttribute( "pagelist ",p);
request.setAttribute( "page ",   arr);
}
arr=null;
p=null;
}else   if( "start ".equals(currPage)){
Page   p=(Page)request.getSession().getAttribute( "pagelist ");
p.setCurrPage(1);
ArrayList   arr=p.getArrayList();
if(arr!=null){
request.setAttribute( "page ",arr);
request.getSession().setAttribute( "pagelist ",p);
}
arr=null;
p=null;
}else   if( "end ".equals(currPage)){
Page   p=(Page)request.getSession().getAttribute( "pagelist ");
p.setCurrPage(p.getTotalPage());
ArrayList   arr=p.getArrayList();
if(arr!=null){
request.getSession().setAttribute( "pagelist ",p);
request.setAttribute( "page ",arr);
}
arr=null;
p=null;
}
}
return   mapping.findForward( "page ");
}

////////////这个是jsp页面的代码
    <body>
        This   is   my   JSP   page.   <br/>
        <table   border= "1 "   whidth= "100% ">
        <tr>
        <th> OrderID </th> <th> CustomerID </th> <th> shipVia </th> <th> shipName </th>
        </tr>
        <logic:notEmpty   scope= "request "   name= "page "   >
        <logic:iterate   id= "item "   name= "page "   scope= "request "   type= "com.util.OrderPageItem ">


        <tr>
        <td> <bean:write   name= "item "   property= "orderID "/> </td>
        <td> <bean:write   name= "item "   property= "customer "/> </td>
        <td> <bean:write   name= "item "   property= "sipvia "/> </td>
        <td> <bean:write   name= "item "   property= "shipname "/> </td>
        </tr>
        </logic:iterate>
        </logic:notEmpty>
        </table>
        <c:if   test= "${pagelist.prev} ">
        <a   href= " <%=request.getContextPath()   %> /page.do?page=start "> 首页 </a>
      <a   href= " <%=request.getContextPath()   %> /page.do?page=Prev "> 上一页 </a>
        </c:if>
        <c:if   test= "${!pagelist.prev} ">
      <font   color= "red "> 上一页 </font>
        </c:if>
        <c:if   test= "${pagelist.next} ">
      <a   href= " <%=request.getContextPath()   %> /page.do?page=Next "> 下一页 </a>
      <a   href= " <%=request.getContextPath()   %> /page.do?page=end "> 末页 </a>
        </c:if>
        <c:if   test= "${!pagelist.next} ">
      <font   color= "red "> 下一页 </font>
        </c:if>
    </body>
</html>

[解决办法]
关于你的第1个问题,我以前遇到过,但是忘了是怎么解决的了,应该不是代码问题.

关于你的第2个问题,刷新时自然会再对action进行操作,建议使用防重复提交功能,适用于在action里增加和删除的操作!
举例说明:添加一条记录,首先通过一个action转到添加记录页面,这个action里可以只写一句代码:this.saveToken(request);然后转到添加记录页面,填写完资料后,提交保存,进入另一个action,目的是保存到数据库,在这个action里开始写上:
if(!this.isTokenValid(request,true)){
PrintWriter o = response.getWriter();
String msg = PubFunc.encodeGB( "请不要重复提交! ");
o.println( " <script language= 'JavaScript '> ");
o.println( "alert ( ' " + msg + " '); ");
o.println( "history.back(-1); ");
o.println( " </script> ");
o.flush();
o.close();
return null;
}

[解决办法]
哦,原来是用toKen啊,我知道了,但是第一个问题怎么解决呢,很困扰啊,大家请指教一下好么??????
[解决办法]
大家请指教一下好么??????

热点排行