java - 转储 java.util.Map 的内容 - 未按预期工作

标签 java servlets collections

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

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

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


    {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 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>

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

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

最佳答案

[L符号表明它是 String[] 的字符串表示形式。 HTTP 可以让你做类似的事情

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

(想想多选<select>)

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

因此,要转储参数,您需要执行以下任一操作。

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

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

关于java - 转储 java.util.Map 的内容 - 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11063275/

相关文章:

java - 如何配置 Apache XML-RPC 以记录到文件而不是控制台?

java - 寻找使用 JUnit 和 Ant 的开源 Java 项目

java - Servlet 方法没有被调用?

java - servlet什么时候释放它的线程

collections - 在 VB6 中创建自定义类的匿名实例

forms - 如何在 Symfony 2 表单中自定义 data-prototype 属性

Java JTabbedPane - 更改所选选项卡之前立即执行的操作

java - GwtUpload Servlet 错误

java - 像 .net 的 "Application_Start"和 "Begin_Request"for java/tomcat/JSP 这样的事件?

java - 使用 ArrayList 实现 Set 集合