java - 连接 JSTL

标签 java jsp jstl el

我在 Controller 中有一个HashMap:

HashMap<String, ArrayList<String> map = new HashMap<String, ArrayList<String>();

在 JSP 页面中,我想通过这样的方式访问它:

<c:forEach var="list" items="${requestScope.list}">
   <c:set var="testing" value="{requestScope.map}"></c:set>
   <c:forEach var="anotherTesting" items="${testing['${list.item}']}">
      <option><c:out value="${anotherTesting}"/></option>
   </c:forEach>
</c:forEach>

其中 list.item 是一个字符串,但它用于另一个进程,但我希望它用于访问 HashMap

有没有办法连接 JSTL? map.keymap['key'] 都可以。

最佳答案

我想这很简单:

<c:forEach var="anotherTesting" items="${testing[list.item]}">
   <option><c:out value="${anotherTesting}"/></option>
</c:forEach>

注意带引号和不带引号的区别:

  • ${testing[list.item]}相当于testing.get(list.getItem());
  • ${testing['list.item']}相当于testing.get("list.item"); .

注意事项:

  • 访问属性不需要指定作用域,除非不同作用域的同名冲突。所以,"${requestScope.list}"可以改成${list} , 和 "${requestScope.map}"可以改成${map} .

  • 请为 var 使用不同的名称外循环的属性。可能是listItem而不是 list .

  • 无需设置 map到不同的变量。那<c:set...>不需要。您可以直接访问 map 的属性属性。

因此,您的循环可以修改为:

<c:forEach var="listItem" items="${list}">
   <c:forEach var="anotherTesting" items="${map[listItem.item]}">
      <option><c:out value="${anotherTesting}"/></option>
   </c:forEach>
</c:forEach>

关于java - 连接 JSTL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19109164/

相关文章:

java - Maven - 无法在多模块项目中激活配置文件

java - XSS 在将数据导入 java 之前转义字符。 JSTL

java - 检查对象的类是否为日期的条件

java - 警告 : No configuration found for the specified action: in namespace: Form action defaulting to 'action' attribute's literal value

jquery - 如何在jsp中创建搜索文本框?

jsf - JSF 页面的 switch case 替代方案

java - KeyListener 不响应按键输入

java - 使用 Java 将时间和日期插入数据库时​​出现问题

java - 用 javascript 编写并托管在端口 8080 上的松散耦合 ui,如何使用 json 与在端口 80 上运行的 java 应用程序进行通信

java - JSP: 新套接字 ("www", 80);工作多年后停止工作