如何在 JSTL 中动态更改 Map 的值

huangapple 未分类评论54阅读模式
标题翻译

How to change Map value dynamically in JSTL

问题

以下是您要翻译的内容:

"我们的一个应用程序是使用Spring MVC + JSP构建的。请参考下面的JSP。

<%@ taglib uri=&quot;http://java.sun.com/jsp/jstl/core&quot; prefix=&quot;c&quot;%>
<%@ page import=&quot;java.util.ArrayList&quot;%>
<%@ page import=&quot;java.util.HashMap&quot;%>

<%
    ArrayList<HashMap<String, String>> listOfMap = new ArrayList<HashMap<String, String>>();
    
    HashMap<String, String> map;
    
    for (int i = 0; i < 3; i++) {
        map = new HashMap<String, String>();
    
        map.put(&quot;key1&quot;, &quot;value1&quot; + i);
        map.put(&quot;key2&quot;, &quot;value2&quot; + i);
    
        listOfMap.add(map);
    }
    
    request.setAttribute(&quot;listOfMap&quot;, listOfMap);
%>

<html>
<body>
    <c:forEach items=&quot;${listOfMap}&quot; var=&quot;maps&quot;>
        <c:forEach items=&quot;${maps}&quot; var=&quot;mapItem&quot;>
            ${mapItem.key} ${mapItem.value} <br />
        </c:forEach>
    </c:forEach>
</body>
</html>

正如您在这个JSP中所看到的,我试图迭代Map并在页面上显示键和值。

但是,如果我想在循环内部迭代时更改mapItem.keymapItem.value的值,该怎么办?

所以它将如下所示。

<c:forEach items=&quot;${listOfMap}&quot; var=&quot;maps&quot;>
    <c:forEach items=&quot;${maps}&quot; var=&quot;mapItem&quot;>
        &lt;!--基本上我将在这里编写代码(在脚本中)以防止跨站点脚本攻击--&gt;
        ${mapItem.key} ${mapItem.value} <br />
    </c:forEach>
</c:forEach>

"

请注意,上面的JSP代码是关于在JSP页面中迭代Map并显示其键和值。在第二个示例中,您提到要在循环内部更改mapItem.keymapItem.value的值以防止跨站点脚本攻击,但是您并没有提供具体的代码。如果您需要更多关于如何实现这一点的帮助,请提供更多上下文或代码示例,我将很乐意协助您。

英文翻译

One of our application built using Spring MVC + JSP.
Please refer below JSP.

&lt;%@ taglib uri=&quot;http://java.sun.com/jsp/jstl/core&quot; prefix=&quot;c&quot;%&gt;
&lt;%@ page import=&quot;java.util.ArrayList&quot;%&gt;
&lt;%@ page import=&quot;java.util.HashMap&quot;%&gt;
&lt;%
	ArrayList&lt;HashMap&lt;String, String&gt;&gt; listOfMap = new ArrayList&lt;HashMap&lt;String, String&gt;&gt;();

	HashMap&lt;String, String&gt; map;

	for (int i = 0; i &lt; 3; i++) {
		map = new HashMap&lt;String, String&gt;();

		map.put(&quot;key1&quot;, &quot;value1&quot; + i);
		map.put(&quot;key2&quot;, &quot;value2&quot; + i);

		listOfMap.add(map);
	}

	request.setAttribute(&quot;listOfMap&quot;, listOfMap);
%&gt;
&lt;html&gt;
&lt;body&gt;
	&lt;c:forEach items=&quot;${listOfMap}&quot; var=&quot;maps&quot;&gt;
		&lt;c:forEach items=&quot;${maps}&quot; var=&quot;mapItem&quot;&gt;
      			${mapItem.key} ${mapItem.value} &lt;br /&gt;
		&lt;/c:forEach&gt;
	&lt;/c:forEach&gt;
&lt;/body&gt;
&lt;/html&gt;

As you can see in this jsp that i am trying to iterate map and display key and value on page.

But what should be done in case if i want to change the value of mapItem.key and mapItem.value while iterating inside the loop.

So it would like below.

&lt;c:forEach items=&quot;${listOfMap}&quot; var=&quot;maps&quot;&gt;
	&lt;c:forEach items=&quot;${maps}&quot; var=&quot;mapItem&quot;&gt;
            &lt;!--Basically i would write a code (in scriplet) to prevent cross site scripting here --&gt;
  			${mapItem.key} ${mapItem.value} &lt;br /&gt;
	&lt;/c:forEach&gt;
&lt;/c:forEach&gt;

huangapple
  • 本文由 发表于 2020年5月30日 15:26:36
  • 转载请务必保留本文链接:https://java.coder-hub.com/62099206.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定