Struts2 Struts 2没有填充HashMap<;字符串,字符串>;

Struts2 Struts 2没有填充HashMap<;字符串,字符串>;,struts2,Struts2,我正在尝试使用struts 2表单更新地图。在映射上迭代可以正确地显示键值对,但是当我提交表单时,映射没有被填充。 键是一个包含以下字符的字符串:。和/。以下是一个例子: Map<String, String> map = new HashMap<String, String>(); map.put("utilities.student_info.note", "note"); <s:iterator value="map" var="property" stat

我正在尝试使用struts 2表单更新地图。在映射上迭代可以正确地显示键值对,但是当我提交表单时,映射没有被填充。 键是一个包含以下字符的字符串:。和/。以下是一个例子:

Map<String, String> map = new HashMap<String, String>();
map.put("utilities.student_info.note", "note");

<s:iterator value="map" var="property" status="status">
  <s:property value="%{key}"/>
  <s:textarea name="map[%{key}]" value="%{value}" rows="5" cols="60"/>
</s:iterator>
Map Map=newhashmap();
地图放置(“实用程序.学生信息.注释”,“注释”);
我尝试使用这样的引号:
name=“map['%{key}']”
,但仍然不起作用。 我可以从日志中看到,
ParamsInterceptor
正在正确设置参数:
map[utilities.student\u info.note]=>[note]
。但地图在行动方面是空的。 如果我使用
name=“map[%{attr.status.index}]”
,它会填充映射,但键是一个索引
(映射[0]=>[note])
,这是不正确的


如有任何建议,将不胜感激。谢谢。

这取决于您使用的Struts2版本,但在2.3.8
map['utilities.student\u info.note']
上,它不是一个可接受的参数。尝试
map['utilities\u student\u info\u note']
,它应该可以工作。键应仅由单词字符组成。

这取决于您使用的Struts2版本,但在2.3.8
map['utilities.student\u info.note']
上,它不是一个可接受的参数。尝试
map['utilities\u student\u info\u note']
,它应该可以工作。键应仅由单词字符组成。

如何/何时创建映射?映射将在操作的prepare()方法中创建和填充。我认为struts无法将包含特殊字符的键解释为字符串。如果我删除键(name=map['utilities'])中的特殊字符,并且正如我前面提到的,如果我使用循环索引作为键,它也会很好地填充映射。但我希望地图的键存储为:“utilities.student\u info.note”。为什么要使用地图而不是对象?在任何情况下,S2的哪个版本?这些键和值对从inputstream读取并存储到java.util.Properties对象中,但我需要在表单中使用Map以包含一些附加属性。您不需要为Map设置设置器,只需要getter。如何/何时创建Map?Map在操作的prepare()中创建和填充方法我认为struts无法将包含特殊字符的键解释为字符串。如果我删除键(name=map['utilities'])中的特殊字符,并且正如我前面提到的,如果我使用循环索引作为键,它也会很好地填充映射。但我希望地图的键存储为:“utilities.student\u info.note”。为什么要使用地图而不是对象?在任何情况下,S2的哪个版本?这些键和值对从inputstream读取并存储到java.util.Properties对象中,但我需要在表单中使用Map来包含一些附加属性。映射不需要设置器,只需要获取器。