Java 在多个JSP页面中添加ArrayList

Java 在多个JSP页面中添加ArrayList,java,spring,spring-boot,jsp,jstl,Java,Spring,Spring Boot,Jsp,Jstl,我需要将其添加到两个或更多JSP页面。我希望尽量避免使用样板代码,并且需要在几个JSP页面中使用此代码片段 我应该将此代码段放在哪里,直到目录com.lizardking.demographic.xxx 如何将其放置在来自另一个外部文件的JSP文件中 就命名约定而言,该文件应考虑什么,例如,实用程序类等 我使用Spring Boot作为后端 <% ArrayList<String> maritalStatusList = new ArrayList<String&

我需要将其添加到两个或更多JSP页面。我希望尽量避免使用样板代码,并且需要在几个JSP页面中使用此代码片段

  • 我应该将此代码段放在哪里,直到目录com.lizardking.demographic.xxx
  • 如何将其放置在来自另一个外部文件的JSP文件中
  • 就命名约定而言,该文件应考虑什么,例如,实用程序类等
  • 我使用Spring Boot作为后端

    <%
        ArrayList<String> maritalStatusList = new ArrayList<String>();
    
            maritalStatusList.add("single/soltero");
            maritalStatusList.add("married/casado");
            maritalStatusList.add("divorced/divorciado");
            maritalStatusList.add("widow(er)/viudo(a)");
    
        request.setAttribute("maritalStatusList", maritalStatusList);
    %>
    
    
    Marital status/Estado civil
    <select id="maritalStatus" name="maritalStatus">
    <option value=""></option>
    <c:forEach items="${maritalStatusList}" var="listItem">
        <option value="${listItem}" <c:if test="${listItem eq demoEntity.maritalStatus}">selected="selected"</c:if> >
            ${listItem}
        </option>
    </c:forEach>    
    </select>
    
    
    婚姻状况/不动产民事诉讼
    ${listItem}
    
    如果您使用的是Spring Boot MVC,那么最好将控制器中的maritalStatusList插入到模型对象中。因此,在返回.jsp之前,您可以使用一个方法生成ArrayList的数据,比如generateStatusList(),并从控制器方法生成:

    ...
    ArrayList <String> maritalStatusList = generateStatusList();
    model.addAttribute("maritalStatusList", maritalStatusList);
    ...
    
    。。。
    ArrayList maritalStatusList=generateStatusList();
    model.addAttribute(“maritalStatusList”,maritalStatusList);
    ...
    
    然后,您可以使用.jsp代码访问maritalStatusList


    看一看

    我最后做的是将此方法放在我的控制器中。然后通过ModelMap将其发送到视图。我不确定这样做是否“正确”。它似乎使控制器膨胀

    public Map<String, String> getMaritalStatusList(){
    
       Map<String, String> maritalStatusList = new HashMap<String, String>(); 
    
       maritalStatusList.put("married/casado", "married/casado");
       maritalStatusList.put("married/casado","married/casado");
       maritalStatusList.put("divorced/divorciado", "divorced/divorciado");
       maritalStatusList.put("widow(er)/viudo(a)", "widow(er)/viudo(a)");
    
       return maritalStatusList;
    }
    
    publicmap getMaritalStatusList(){
    Map maritalStatusList=新建HashMap();
    maritalStatusList.put(“已婚/casado”,“已婚/casado”);
    maritalStatusList.put(“已婚/casado”,“已婚/casado”);
    maritalStatusList.put(“离婚/离婚IADO”、“离婚/离婚IADO”);
    maritalStatusList.put(“寡妇(er)/viudo(a)”,“寡妇(er)/viudo(a)”;
    返回maritalStatusList;
    }
    
    请检查一下,这是否回答了您的问题@SariqShaikh我实现了页面上的内容,但它对我不起作用。有或没有CDI版本。我最后做的是把地图放在我的控制器里弹簧不是标准的JEE。在春天,你有
    @Singleton
    而不是
    @ApplicationScoped
    @coder3是的,你是对的,你在下面发布的答案是这种方法。@coder3顺便说一句,我不觉得它会膨胀控制器。。。这是我的观点,但我已经使用过这种方法好几次了,它对我来说很好。。。可能该方法不是直接在控制器中实现的,而是在另一个类中实现的。