2013-11-25 51 views
1

以下是我的index.jsp啓用後退按鈕與阿賈克斯

<%@ taglib prefix="sj" uri="/struts-jquery-tags"%> 
<%@ taglib prefix="s" uri="/struts-tags"%> 
<html> 
<head> 
<s:head/> 
<sj:head/> 
<script type="text/javascript" src="jquery.validate.js"></script> 
<script type="text/javascript" src="validate.js"></script> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<link rel="stylesheet" type="text/css" href="style.css" media="all" /> 
<title>My Air - Home</title> 
</head> 
<body> 
    <div id="MainPage"> 
     <jsp:include page="header.jsp"></jsp:include> 
     <div id="mainContent"> 
     <jsp:include page="menubar.jsp"></jsp:include> 
      <div id="mainContentTop"> 
      <div id="ContentLeft"> 
       <jsp:include page="search.jsp"></jsp:include> 
      </div> 
      <div id="contentRight"> 
       <jsp:include page="topdeals.jsp"></jsp:include> 
      </div> 
      </div> 
     </div> 
     <jsp:include page="footer.jsp"></jsp:include> 
    </div> 
</body> 
</html> 

以下是我search.jsp

<%@ taglib prefix="s" uri="/struts-tags"%> 
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>\ 
<s:form action="searchFlight" theme="css_xhtml" cssClass="form1small" name="searchFlightForm"> 
    <div class="searchHeadersmall">Search Flight</div> 
    <div id="searchForm1"> 
     <s:actionerror/> 
     <s:select list="#application.cityList" headerValue="--------Select--------" headerKey="select" name="searchFlightDetails.from" label="Leaving From"></s:select> 
     <s:select list="#application.destlist" headerValue="---------Select-------" headerKey="select" name="searchFlightDetails.to" label="Going To"></s:select> 
     <sj:datepicker id="date0" label="Date" name="searchFlightDetails.dateoftravel" readonly="true" minDate="0"/> 
     <s:select list="#{'1':'1','2':'2','3':'3','4':'4','5':'5'}" headerValue="" headerKey="" name="searchFlightDetails.noofpassengers" label="No of tickets" style="width:50%; float:left"></s:select> 
     <div class="inputsmall nobottombordersmall"> 
      <s:radio label="Type" name="searchFlightDetails.nonstop" 
       list="#{'Y':'NonStop','N':'Normal'}"/> 
     </div> 
     <div id="submitdivid1"> 
      <sj:submit value="Show Flights" targets="mainContent"/> 
     </div> 
    </div> 
</s:form> 

當表單提交以下searchFlightSuccess.jsp裝入mainContent格:

<%@ taglib prefix="s" uri="/struts-tags"%> 
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%> 
<s:if test="#session.username!=null"> 
    <jsp:include page="menubaruser.jsp"></jsp:include> 
</s:if> 
<s:if test="#session.username==null"> 
    <jsp:include page="menubar.jsp"></jsp:include> 
</s:if> 
<div id="searchHeaderHistory">Search Results</div> 
<div class="CSSTableGenerator"> 
    <table> 
     <colgroup> 
      <col span="1" style="width: 5%;"> 
      <col span="1" style="width: 10%"> 
      <col span="1" style="width: 15%"> 
      <col span="1" style="width: 10%"> 
      <col span="1" style="width: 15%"> 
      <col span="1" style="width: 15%"> 
      <col span="1" style="width: 15%"> 
      <col span="1" style="width: 5%"> 
      <col span="1" style="width: 10%"> 
     </colgroup> 
     <thead> 
      <tr> 
       <td colspan="9">From:<s:property 
         value="searchFlightDetails.from" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        To:<s:property value="searchFlightDetails.to" /></td> 
      </tr> 
     </thead> 
     <tbody> 
      <tr> 
       <td>Flight ID</td> 
       <td>Provider</td> 
       <td>Departure Source</td> 
       <td>Via</td> 
       <td>Via Arrival</td> 
       <td>Via Departure</td> 
       <td>Destination Arrival</td> 
       <td>Fare</td> 
       <td></td> 
      </tr> 

      <s:iterator value="searchedFlightsList" var="flights"> 

       <tr> 

        <td align="center"><s:property 
          value="#flights.flightDetails.fid" /></td> 
        <td align="center"><s:property 
          value="#flights.flightDetails.providerDetails.pname" /></td> 
        <td align="center"><s:property value="#flights.sourcedepdate" />,<s:property 
          value="#flights.sourcedeptime" /> hrs</td> 
        <td align="center"><s:property 
          value="#flights.flightDetails.routeDetails.via" /></td> 
        <td align="center"><s:property value="#flights.viaarrdate" />,<s:property 
          value="#flights.viaarrtime" />hrs</td> 
        <td align="center"><s:property value="#flights.viadepdate" />,<s:property 
          value="#flights.viadeptime" />hrs</td> 
        <td align="center"><s:property value="#flights.destarrdate" />,<s:property 
          value="#flights.destarrtime" />hrs</td> 
        <td width="5%" align="center"><s:property 
          value="#flights.flightDetails.fares2d" /></td> 
        <td width="5%" align="center"> 
         <s:form 
          action="passengerDetailsLink" method="get" theme="simple" 
          id="passengerDetailsLink_%{#flights.sid}"> 
          <s:hidden value="%{#flights.sid}" name="sid" /> 
          <s:hidden value="%{#flights.flightDetails.fares2d}" name="fare" /> 
          <s:hidden value="%{searchFlightDetails.from}" name="from" /> 
          <s:hidden value="%{searchFlightDetails.to}" name="to" /> 
          <s:hidden value="%{searchFlightDetails.noofpassengers}" 
           name="passengers" /> 
          <s:hidden value="1" name="flag" /> 
          <sj:submit value="Book" targets="mainContent" 
           cssClass="orangebuttonsmall" /> 
         </s:form></td> 

       </tr> 
      </s:iterator> 
     </tbody> 
    </table> 
</div> 

情景如下s: 我在search.jsp中輸入了一些值。我提交了表單,並相應地將一些結果加載到mainContent div中。由於表單是使用struts2 jQuery插件提交提交的,因此URL保持不變,因此瀏覽器後退按鈕不起作用。如果我想回去,我該怎麼做。 我閱讀了一些散列技術,但我無法將其應用於此。

回答

0

在Struts2的標頭標籤中,jQuery使用ajaxhistory屬性。將此屬性設置爲true爲Ajax請求啓用瀏覽器歷史記錄。詳情請參閱wiki的header tag

+0

你的建議是正確的。但問題是「mainContent」div的內容被新內容所取代。將ajaxhistory設置爲true可以啓用後退按鈕,url也會在地址欄中更改。但點擊後退按鈕會將url更改爲上一個url,但「mainContent」div的內容不會更改。所以只有url的變化,但不是內容..更多的建議,你可以幫助? –

+1

它應該在返回按鈕上調用ajax請求,但是使用內容的宮殿中的'div'應該使用'sj:div'。 –