在多个 JSP 页面中添加 ArrayList

Adding a ArrayList in more than one JSP page

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

  1. 我应该将此代码片段放在目录 com.lizardking.demographic.xxx 的什么位置?
  2. 如何将它放入来自另一个外部文件的 JSP 文件中?
  3. 就命名约定而言,该文件将被视为什么,例如实用程序 class 等

我正在为后端使用 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>

如果您正在使用 Spring Boot MVC,也许最好将 maritalStatusList 从控制器插入到模型对象中。因此,您可以使用一种方法来生成 ArrayList 的数据,比方说 generateStatusList(),然后从您的 Controller 方法返回 .jsp:

...
ArrayList <String> maritalStatusList = generateStatusList();
model.addAttribute("maritalStatusList", maritalStatusList);
...

然后您可以使用您的 .jsp 代码

访问 maritalStatusList

看看https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-ann-modelattrib-methods

我最终做的是将这个方法放在我的控制器中。然后通过 ModelMap 将其发送到视图。我不确定这是否是 "right" 的方式。它似乎使控制器膨胀。

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