我想根据@Greg Kopff发布的回复提出这个问题here
基本上,我要做的是将request.getParameterMap()方法返回的Map的内容DUMP输出到输出 .
我得到以下奇怪的Map作为输出(我相信的值是String或String数组的对象引用的地址)
{submit=[Ljava.lang.String;@1fe4169, color=[Ljava.lang.String;@178920a,
chek_games=[Ljava.lang.String;@bbfa5c, foo=[Ljava.lang.String;@131de9b}
我试过以下代码 -
public class CoffeeSelect extends HttpServlet {
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Map requestParams = req.getParameterMap();
resp.getWriter().println(requestParams);
}
}
以下是我的HTML <form>
<form action="SelectCofee.Do" method="post">
<select id="coffe_color" name="color">
<option value="green">Green</option>
<option value="red">Red</option>
<option value="blue">Blue</option>
</select>
<input type="checkbox" id="chek_games" name="chek_games" value="chess" />
<input type="checkbox" id="chek_games" name="chek_games" value="badminton" />
<input type="checkbox" id="chek_games" name="chek_games" value="cricket" />
<input type="hidden" id="foo" name="foo" value="bar" />
<input type="submit" name="submit" value="Submit" />
</form>
如何尊重这些对象引用或让我这样说;我在这里错过了什么吗?
1 回答
[L
表示法告诉它是String[]
的字符串表示形式 . HTTP可以让你做类似的事情http://myserver.com/mypage?myparam=firstvalue&myparam=secondvalue ....
(想想多选
<select>
)为了实现这一点,参数Map不是
Map<String, String>
而是Map<String, String[]>
(我不知道实现是否真的使用泛型,它只是一个显式表示) .因此,要转储参数,您需要 .
a)假设您不会为同一个参数获得多个值;循环参数名称并使用
request.getParameter
b)如果接受多个值,则循环参数名称并序列化数组 .