0

我想根据@Greg Kopff在这里发布的回复提出这个问题

基本上,我要做的是将 request.getParameterMap() 方法返回的 Map 内容转储到输出。

我得到以下奇怪的 Map 作为输出(我相信它的值是字符串或字符串数​​组的对象引用的地址)

    {提交=[Ljava.lang.String;@1fe4169, 颜色=[Ljava.lang.String;@178920a,  
         chek_games=[Ljava.lang.String;@bbfa5c, foo=[Ljava.lang.String;@131de9b}

我尝试了以下代码 -

    公共类 CoffeeSelect 扩展 HttpServlet {

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) 抛出 ServletException, IOException {
        映射 requestParams = req.getParameterMap();

        resp.getWriter().println(requestParams);
        }

    }

以下是我的 HTML <form>

    <form action="SelectCofee.Do" method="post">
     <select id="coffe_color" name="color">
        <option value="green">绿色</option>
        <option value="red">红色</option>
        <option value="blue">蓝色</option>
     </选择>

     <br/><br/>
     <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>

如何尊重那些对象引用或者让我这样说;我在这里错过了什么吗?

4

1 回答 1

1

表示法[L告诉它是 的字符串表示String[]。HTTP 允许你做类似的事情

http://myserver.com/mypage?myparam=firstvalue&myparam=secondvalue ....

(想想多选<select>

为此,参数 Map 不是Map<String, String>但是Map<String, String[]>(我不知道实现是否真的使用泛型,它只是一个显式表示)。

因此,要转储参数,您也需要转储。

a)假设您不会为同一个参数获得多个值;循环获取参数名称并使用request.getParameter

b) 如果您接受多个值,则循环获取参数名称并序列化数组。

于 2012-06-16T12:12:51.733 回答