Java 如何设置从jsp到Action的HashMap

Java 如何设置从jsp到Action的HashMap,java,jsp,map,struts2,hashmap,Java,Jsp,Map,Struts2,Hashmap,我的Action类中有一个HashMap: private Map<String, String> ids = new HashMap<String, String>(); private Map id=new HashMap(); 在jsp中,我尝试如下设置此哈希映射: <input type="text" name="ids[0].key" value="key"> <input type="text" name="ids[0]" value="

我的Action类中有一个HashMap:

private Map<String, String> ids = new HashMap<String, String>();
private Map id=new HashMap();
在jsp中,我尝试如下设置此哈希映射:

<input type="text" name="ids[0].key" value="key">
<input type="text" name="ids[0]" value="value">
if(ids!=null){
    for(Map.Entry<String, String> entry : ids.entrySet()){
        system.out.println(entry.getKey()+"-"+entry.getValue());
    }
}

但是在提交之后,当我在这样的操作中迭代地图时:

<input type="text" name="ids[0].key" value="key">
<input type="text" name="ids[0]" value="value">
if(ids!=null){
    for(Map.Entry<String, String> entry : ids.entrySet()){
        system.out.println(entry.getKey()+"-"+entry.getValue());
    }
}
if(id!=null){
对于(Map.Entry:ids.entrySet()){
system.out.println(entry.getKey()+“-”+entry.getValue());
}
}
我只得到“0值”而不是“键值”


我怎么能做我想做的?有人能帮我吗?

试图在JSP文件的
哈希映射中设置值是一个非常糟糕的主意。为了坚持最佳实践并过上幸福的生活,您应该重新审视您的设计。您可以将数据发布到服务器端(所有来自JSP的输入值),然后根据您的要求从请求中获取值以存储在
HashMap
集合中,这是一个更好的选择。

您有
String
类型的键,因此应该像字符串一样映射。比如说

<input type="text" name="ids['0']" value="%{value}">

然后您将获得键
'0'
和OGNL提供的值


关于索引属性名称和
createIfNull
设置,您可以在文档中找到。

提交后如何检索ID?哈希映射到文本字段几乎与列表或集合相同。使用索引属性名称并确保启用了
createIfNull
。@SyamS通过@romac我不明白您对“索引属性名称并确保启用了createIfNull”所说的话。我想对Hashmap做文本字段。谢谢你的回复。“试图在JSP文件的HashMap中设置值是一个非常糟糕的主意”为什么?我没有用剪纸,对吗?很抱歉我误解了,我已经知道我做错了什么。为了我想要的,我需要一张地图,你让我看到了。谢谢;)你的答案仍然正确!不要在集合中使用集合。这不管用。始终在bean中使用集合。“不要在集合中使用集合”-为什么?“这不起作用”-但它起作用了,我已经可以通过jsp设置地图了..@tviana你能提供一个例子吗?因为我不明白你到底在说什么。好吧,让我们假设在我的jsp上我有以下文本字段:在操作中我有一个映射,在我提交文本字段之后,当我迭代时,我得到了正确匹配的值(Map.Entry条目:ids.entrySet()){for(String id:Entry.getValue()){system.out.println(entry.getKey+“-”id);}}}输出:0-20-11-21-3