本人菜鸟,问个Struts2调用Action的问题,谢谢了!
我现在有2个页面,A.jsp和B.jsp。我在A页面上通过一个<form action="search.action" method="post"/>标签调用了search.action在数据库中进行查询,将查询的结果以table的形式分页显示在B.jsp这个页面上,我通过B.jsp上的一个一个按钮触发事件,修改了B.jsp这个页面中table里面某行数据对应的在数据库中的记录,我现在想要在B.jsp这个页面上将我刚刚所做的修改体现出来,IE中刷新一下页面可以达到效果,但是会弹出一个提示框但是这弹框看起来很别扭,我希望通过重新调用之前调用的查询  search.action再查一次,以避免弹出那个提示框。问题来了,我进行查询的时候,<form />中的方法用的是post,通过访问前台后台获取到的调用那个action时的url都不能重新查,
<!-- 以下代码都是在显示查询结果的页面中-->
<!--后台获取到的url -->
<% 
        String url=request.getScheme()+"://"; 
url+=request.getHeader("host"); 
url+=request.getRequestURI(); 
if(request.getQueryString()!=null) 
url+="?"+request.getQueryString(); 
session.setAttribute("jumpBackUrl",url);
//out.println("后台获取到的url:"+url);
%><a href="javascript: jumpTOURL()   ;">访问前台获取到的url</a>
<a href="javascript:window.location.href='${sessionScope.jumpBackUrl}' ">访问后台获取到的url</a><script type="text/javascript">
 function showURL(){
    var   urlStr   =   self.location.href   ;
    //alert(urlStr);
    }
<script>我把<form />里面的method换成get,并在后台将传入的中文参数进行转码,可以通过访问后台获取到的调用那个action时的url再次进行查询以实现“刷新B.jsp并不弹出提示框”的效果,但是朋友跟我说转码的时候有的中文字符能正常转,有的转换完了是乱码,不能进行查询,因此这个方案我也暂时没有采用。
我怎么才能调用刚刚执行的action呢?有没有简便点的方法?或者我想要实现上面所说的效果,有没有别的办法?简便些的

解决方案 »

  1.   

    我晕,图片怎么没显示
    我传到我空间的相册里了啊
    http://hi.csdn.net/space-4423798-do-album-id-112955.html<img src='http://hi.csdn.net/attachment/201112/8/4423798_1323341393wTrX.gif'/>
      

  2.   

    按照你的说法, b页面的列表数据发生改变的时候立即在b页面上显示,是不是?如果是的话,我觉得你对b页面reload一下就可以了,不需要再去查一次了啊,再查一次的效果和reload是一样的;如果你只想刷新列表中发生改变的那行(列)数据,那我觉得用ajax技术比较简单。
      

  3.   

    reload的话会导致IE弹出上面那个刷印页面的提示框啊,我现在就是不想让它弹框
    另外,我的显示查询结果的页面是这么显示的
     <!-- 表格 -->
        <table class="table">
        <tr>
        <th style="{width:20%;}">图书编号</th>
        <th style="{width:6%;}">题名</th>
        <th style="{width:9%;}">作者</th>
        <th style="{width:9%;}">主题词</th>
        <th style="{width:6%;}">索书号</th>
        <th style="{width:9%;}">ISBN</th>
        <th style="{width:4%;}">语言</th>
        <th style="{width:8%;}">出版社</th>
        <th style="{width:6%;}">标价</th>
        <th style="{width:7%;}">藏书处</th>
        <th style="{width:6%;}">预约借书</th>
        <c:if test="${sessionScope.user=='worker2'}">
        <th style="{width:7%;}">修改图书信息</th>
        </c:if>
        </tr>
        <c:forEach   items="${sessionScope.tmpPageBean.list}"  var="books" varStatus="st">
        <tr>
    <td>${books.BUuid }</td>
    <td>${books.BName }</td>
    <td>${books.BAuthor }</td>
    <td>${books.BKeyword }</td>
    <td>${books.BCall }</td>
    <td>${books.BIsbn }</td>
    <td>${books.BLanguage }</td>
    <td>${books.BPress }</td>
    <td>${books.BValue }</td>
    <td>${books.BLocate }</td>
    <td style="{text-align: center;}">&nbsp;
    <c:if test="${1==books.BIsborrowable}">
    <a href="http://192.168.0.23:8080/MyLibrary/makeAppointment.action?BUuid=${books.BUuid}"
    onclick="return(confirm('预约前请先了解预约规则,\n确实要进行预约么?'))">预约此书</a>
    </c:if>
    </td>
    <c:if test="${sessionScope.user=='worker2'}">
    <td style="{text-align: center;}">
    <a href="#" onclick="edit('${books.BUuid }')">编辑</a>
    <input type="button" onclick="edit('${books.BUuid }')" value="编辑"/>
    </td>
    </c:if>
    </tr>
        </c:forEach  >
        
        <!-- 页码 -->
        <tr><td colspan="13" style="{text-align:right;}">
        <%
         PageBean myPageBean=(PageBean)session.getAttribute("tmpPageBean");
         int totalPage=myPageBean.getTotalPage();
         int currentPage=myPageBean.getCurrentPage();
         int i=0;
        %>     
        
        <c:if test="${sessionScope.tmpPageBean.currentPage!=1}">
        <a href="http://192.168.0.23:8080/MyLibrary/jumpPage.action?page=1">[首页]</a>
        <a href="http://192.168.0.23:8080/MyLibrary/jumpPage.action?page=${sessionScope.tmpPageBean.currentPage-1}">[上一页]</a>
        </c:if>
        <!-- 第一页到当前页 -->
        <%
         for(;i<currentPage-1;i++){
        %>
        <a href="http://192.168.0.23:8080/MyLibrary/jumpPage.action?page=<%= i + 1%>"><%=i + 1%></a>
        <%
         } 
        %>
        <!-- 当前页 -->
        <%= currentPage%>
        <!-- 当前页到最后一页 -->
        <%
         for(i=currentPage;i>=currentPage&&i<totalPage;i++){
        %>
        <a href="http://192.168.0.23:8080/MyLibrary/jumpPage.action?page=<%= i + 1%>"><%=i + 1%></a>
        <%
         } 
        %>
        
        <c:if test="${sessionScope.tmpPageBean.currentPage!=sessionScope.tmpPageBean.totalPage}">
        <a href="http://192.168.0.23:8080/MyLibrary/jumpPage.action?page=${sessionScope.tmpPageBean.currentPage+1}">[下一页]</a>
        <a href="http://192.168.0.23:8080/MyLibrary/jumpPage.action?page=${sessionScope.tmpPageBean.totalPage}">[尾页]</a>
        </c:if>
        
         <br> 共找到${sessionScope.tmpPageBean.allRow}条记录, 当前显示第${sessionScope.tmpPageBean.currentPage}页     
        
        </td></tr>
        </table>我想要刷新列表中发生改变的那行数据,怎么才能获取到我要刷新的元素的ID啊
      

  4.   

    哦,发帖的时候有一点说错了
    我把<form />里面的method换成get,并在后台将传入的中文参数进行转码,通过访问后台获取到的调用那个action时的url尝试重新进行查询这个办法实现不了“刷新B.jsp并不弹出提示框”的效果,显示结果的页面是进去了,但是修改的地方没体现出来,而且在这个url上刷新页面刚才做的修改也不会有所体现怎么搞,谁来救救我啊