2011-06-10 28 views
1

I的值有一個jsp中,我有一個下拉作爲更新一個迭代器標籤的在Struts2

<s:select name="newQuestion.CertificationId" list="certificationList" 
      listKey="certificationId" listValue="certificationName" 
      headerKey="" headerValue="Select Certification" 
      label="Certification Name" 
      onchange="getQuestionsList(this.value)" /> 

當改變下拉值I可以getQuestionsList。在javascript函數中,我將提交給一個操作類,在該操作類中,我修改了通過迭代器顯示在我的JSP中的questionList的值。

questionList的值包含所有問題,當我從上面的下拉列表中選擇一個值時,我只需填寫屬於在下拉列表中選擇的id的問題。 (我查詢數據庫加載在行動類的問題。)

最初,當頁面加載我所有的問題在questionList而是選擇從下拉值下來後我必須在動作類更新的問題。

爲了顯示問題列表的值我使用iterator標籤

<div id="questionDetails" class="registrationDetails" style="display: none;"> 
    <span><b>Question List</b></span> 
    <br> 
    <table class="registrationDetailsTable"> 
    <tr class="tabledataheader"> 
     <td>Question Id</td> 
     <td>Question Description</td> 
    </tr> 

    <s:iterator value="questionList"> 
     <tr class="tabledatarow"> 
     <td><s:property value="questionId" /></td> 
     <td><s:property value="questionDesc" /></td> 
     </tr> 
</s:iterator> 
    </table> 
</div> 

股利最初是隱藏和選擇在降值的下降我需要顯示的值questionList其正在因爲頁面沒有被重新加載,所以舊值。

當我再次回到這個jsp時,我沒有看到新的值,因爲它沒有得到更新。

任何擡頭請

+0

如果這是ajax,我認爲它不會被Struts2的操作隱式處理,除非您使用的是支持ajax的插件。 – 2011-08-25 04:54:28

回答

0

你爲什麼不嘗試Struts2的JQuery插件。 Here是代碼展示。

你需要的是

<sj:select ...> tag. 

讓我知道如果你仍然需要一個例子。

0

您需要對代碼進行一些更改。讓我列舉它們:

  1. 將您的初始JSP中的以下部分移動到另一個jsp,例如questionList.jsp。下面的部分應該是唯一應該在新創建的jsp中的東西。

    <span><b>Question List</b></span> 
        <br> 
        <table class="registrationDetailsTable"> 
        <tr class="tabledataheader"> 
         <td>Question Id</td> 
         <td>Question Description</td> 
        </tr> 
    
        <s:iterator value="questionList"> 
         <tr class="tabledatarow"> 
         <td><s:property value="questionId" /></td> 
         <td><s:property value="questionDesc" /></td> 
         </tr> 
    </s:iterator> 
        </table> 
    
  2. 在您的主頁上,你需要用

    < JSP來代替上面的代碼部分:包括頁= 「questionList.jsp」 沖水= 「真」/>

  3. 現在部署並查看是否一切都像以前一樣。

  4. 在您的getQuestionsList() javascript函數中,對另一個操作映射進行ajax調用,例如showQuestionList.action?certification=12。這裏,12將是認證的id,您將在該操作中處理。如果使用certification作爲操作屬性,請使用getter和setter方法添加一個具有相同名稱的變量。
  5. 在您的操作方法說showQuestionList(),檢索questionList並分配給操作變量。
  6. 上述方法返回SUCCESS時,結果只發送questionList.jsp。這將有部分列出必要的領域。
  7. getQuestionsList() javascript函數中,ajax調用成功後,獲取數據並將其放入ID爲questionDetails的div中。
  8. 顯示div