JSP 如何在名称属性中连接值?
JSP how to concat value in name attribute?
这是我在 Thymeleaf 中使用的。我只是用 dish.id.
连接 dishIdQuantityMap
<div class="single-menu" th:each="dish : ${dishList}">
<input
th:value="0"
th:name="${'dishIdQuantityMap[' + dish.id + ']'}"
type="number"
min="0"
max="100"
step="1"
readonly
/>
它工作正常,但如果我在 JSP
中做同样的事情
<input
value="0"
name="${'dishIdQuantityMap[' + dish.id + ']' }"
type="number"
min="0"
max="100"
step="1"
readonly
/>
失败了。第 142 行发生异常
我做错了什么?
Caused by: java.lang.NumberFormatException: For input string:
"dishIdQuantityMap"
更新。
如果我这样做,它有点管用
name="${'dishIdQuantityMap['}${dish.id}${']'}"
我觉得你引用的太多了。这是一个演示 JSP.
<%@ page import="java.util.HashMap, java.util.ArrayList"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
ArrayList<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
pageContext.setAttribute("list", list);
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("a", 11);
map.put("b", 22);
map.put("c", 33);
pageContext.setAttribute("map", map);
%>
<c:forEach items="${map}" varStatus="loopCount">
${map[list[loopCount.index]]}
</c:forEach>
输出是
11 22 33 。
您可以尝试使用 name="${dishIdQuantityMap[dish.id]}"
正如 Jeka_FRIZZ 指出的那样,菜肴必须在范围内。
这是我在 Thymeleaf 中使用的。我只是用 dish.id.
连接 dishIdQuantityMap <div class="single-menu" th:each="dish : ${dishList}">
<input
th:value="0"
th:name="${'dishIdQuantityMap[' + dish.id + ']'}"
type="number"
min="0"
max="100"
step="1"
readonly
/>
它工作正常,但如果我在 JSP
中做同样的事情 <input
value="0"
name="${'dishIdQuantityMap[' + dish.id + ']' }"
type="number"
min="0"
max="100"
step="1"
readonly
/>
失败了。第 142 行发生异常
Caused by: java.lang.NumberFormatException: For input string: "dishIdQuantityMap"
更新。 如果我这样做,它有点管用
name="${'dishIdQuantityMap['}${dish.id}${']'}"
我觉得你引用的太多了。这是一个演示 JSP.
<%@ page import="java.util.HashMap, java.util.ArrayList"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
ArrayList<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
pageContext.setAttribute("list", list);
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("a", 11);
map.put("b", 22);
map.put("c", 33);
pageContext.setAttribute("map", map);
%>
<c:forEach items="${map}" varStatus="loopCount">
${map[list[loopCount.index]]}
</c:forEach>
输出是 11 22 33 。 您可以尝试使用 name="${dishIdQuantityMap[dish.id]}" 正如 Jeka_FRIZZ 指出的那样,菜肴必须在范围内。