java - 尝试从列表中的jsp中实现jSTL

标签 java jsp

这是我的 Java 代码:

   List<EmployeeBean>questionList=adao.displayQuestions(eBean,functional_id);
   model.addObject("questionList", questionList);

   Iterator<EmployeeBean> iterator = questionList.iterator();
    while (iterator.hasNext()) {
       String q_id =iterator.next().getSk_question_id();
       System.out.println("QUESTION ID :"+q_id);
       List<EmployeeBean>optionList= adao.displayOptions(eBean,q_id);
       model.addObject("optionList", optionList);
      }

字符串 q_id 将具有基于第一个列表 (questionList) 的多个 id。 根据 q_id,我将从第二个列表(optionList)中获取多个选项。

这是我在 jsp 中尝试的内容: 我无法获取 optionList 值。仅获取列表的最后一个值

  <c:forEach var="EmployeeBean" items="${questionList}">
   ${EmployeeBean.question_name }

     <c:forEach var="EmployeeBean" items="${optionList}">
       <div class="col-xs-4 starategy-data">
       <div class="strategy-head">${EmployeeBean.answer_type }</div>
       <p>${EmployeeBean.answer }</p>
       </div>
     </c:forEach>
  </c:forEach>

最佳答案

一种可能的方式(如果q_id没有相关数据列表,可能会显示不正确):

   List<EmployeeBean>questionList=adao.displayQuestions(eBean,functional_id);
   model.addObject("questionList", questionList);

   List<List<EmployeeBean>> resultList = new ArrayList<>();
   Iterator<EmployeeBean> iterator = questionList.iterator();
   while (iterator.hasNext()) {
          String q_id = iterator.next().getSk_question_id();
          System.out.println("QUESTION ID :"+q_id);
          resultList.add(adao.displayOptions(eBean,q_id));//store it by index
   }
   model.addObject("optionList", resultList);

JSP代码:

 <c:forEach var="EmployeeBean" items="${questionList}" varStatus="status">
   ${EmployeeBean.question_name }

     <c:forEach var="EmployeeBean" items="${optionList.get(status.index)}"><!-- get the related data list -->
       <div class="col-xs-4 starategy-data">
       <div class="strategy-head">${EmployeeBean.answer_type }</div>
       <p>${EmployeeBean.answer }</p>
       </div>
     </c:forEach>
  </c:forEach>
<小时/>

另一种方式(我没试过,你可以测试一下)

Java代码:

   List<EmployeeBean>questionList=adao.displayQuestions(eBean,functional_id);
   model.addObject("questionList", questionList);

   int index = 0;
   while (iterator.hasNext()) {
          String q_id = iterator.next().getSk_question_id();
          System.out.println("QUESTION ID :"+q_id);
          model.addObject("optionList_"+index,adao.displayOptions(eBean,q_id));
          index++;
   }

JSP代码:

<c:forEach var="EmployeeBean" items="${questionList}" varStatus="status">
   ${EmployeeBean.question_name }

     <c:forEach var="EmployeeBean" items="${optionList_status.index}"><!-- not sure if it can work correct here -->
       <div class="col-xs-4 starategy-data">
       <div class="strategy-head">${EmployeeBean.answer_type }</div>
       <p>${EmployeeBean.answer }</p>
       </div>
     </c:forEach>
  </c:forEach>

关于java - 尝试从列表中的jsp中实现jSTL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49896103/

相关文章:

java - 如何从 JSP 页面引用 java .class 文件?

java - 有限的包含和排除不会通过 Maven 编译器插件发生

java - 如何在Azure存储文件共享上上传大文件?

java - 登录网站?(Jsoup)

java - 如何以编程方式在表之间传输大量数据?

java - 如何管理具有一个 Activity 和多个 fragment 的Android应用程序?

java - IE 通过 HTTPS 下载时显示 "Windows cannot find https://xxxxxxx"错误

java - 在 Struts 2 中使用 Ajax 和 Oracle 数据库自动完成文本框

java - 简单Spring项目中的404错误

java - 使用 ExtJS 进行页面重定向/刷新