Обновление значения тега итератора в struts2 - PullRequest
1 голос
/ 10 июня 2011

У меня есть JSP, в котором у меня есть раскрывающийся как

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

Когда значение выпадающего меню меняется, я могу getQuestionsList. В функции javascript я передаю класс действия, где я изменяю значение questionList , которое отображается в моем JSP через итератор.

Значения questionList содержат все вопросы, и когда я выбираю значение из раскрывающегося списка, мне нужно заполнить только те вопросы, которые относятся к идентификатору, выбранному в раскрывающемся списке. (Я запрашиваю БД для загрузки вопросов в классе действий.)

Изначально, когда страница загружена, у меня есть все вопросы в questionList , но после выбора значения из выпадающего списка у меня есть обновленные вопросы в классе действий.

Для отображения значений списка вопросов я использую тег итератора

<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>

Элемент div изначально скрыт, и при выборе значения в раскрывающемся списке мне нужно отобразить значения questionList , который принимает старые значения, поскольку страница не перезагружается.

Когда я снова возвращаюсь к этому jsp, я не вижу нового значения, поскольку оно не обновляется.

Любые головы, пожалуйста

Ответы [ 2 ]

0 голосов
/ 24 октября 2011

Вам необходимо внести несколько изменений в код.Позвольте мне перечислить их:

  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. На главной странице вам необходимо заменить вышеуказанную часть кода на

  3. Теперь разверните и посмотрите, все ли на месте, как раньше.

  4. В вашей функции javascript getQuestionsList() сделайте ajax-вызов другого сопоставления действий, скажемshowQuestionList.action?certification=12.Здесь 12 будет id сертификации, которую вы будете обрабатывать в действии.Если вы используете certification в качестве свойства действия, добавьте переменную с тем же именем с помощью методов getter и setter.
  5. В вашем методе действия произнесите showQuestionList(), получите questionList и присвойте переменной действия.
  6. При возврате SUCCESS вышеуказанного метода результат должен отправлять только questionList.jsp.Это будет иметь часть для перечисления только необходимых полей.
  7. В функции JavaScript getQuestionsList(), после успешного вызова ajax, получите данные и поместите их в div с id questionDetails.
  8. Показать div.
0 голосов
/ 24 октября 2011

Почему бы вам не попробовать Struts2 Jquery Plugin. Здесь - витрина с кодом.

Что вам нужно, это

<sj:select ...> tag.

Дайте мне знать, если вам все еще нужен пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...