【问题标题】:how to get value from request attribute outside loop如何从循环外的请求属性中获取值
【发布时间】:2019-06-21 03:22:03
【问题描述】:

我正在尝试在 for 循环内的请求对象中设置值,并且已成功设置,但是如果在循环内设置了值,我如何获取该值。我尝试过的代码如下-

        String str = "";                
            for(int i=0; i<sizearray.length; i++){
                str += sizearray[i];                         
                request.setAttribute("ssize", str.substring(str.lastIndexOf("-") + 1));       // two value set ie. 11 and 19
            }               
        out.println(request.getAttribute("ssize"));  // giving one value ie. 19

【问题讨论】:

    标签: java hibernate jsp servlets


    【解决方案1】:

    你应该能够毫无问题地在 for 循环之外访问 request 的值。

    我认为真正的问题是,当设置最后一个值 (19) 时,您几乎覆盖了初始值 (11)。

    这是因为您对两个值使用相同的键。

    【讨论】:

      【解决方案2】:

      这是因为您使用新值覆盖旧值,因为您对所有人使用相同的键。更好的方法是创建一个Map,将数据放入其中,然后将此映射作为属性存储到请求对象中。

          Map<String, String> dataMap = new HashMap<>();
          String str = "";                
          for(int i=0; i<sizearray.length; i++) {
              str += sizearray[i];                         
              dataMap.put("data"+i, str.substring(str.lastIndexOf("-") + 1));       
          }    
          request.setAttribute("ssize", dataMap);
          out.println(request.getAttribute("ssize")); // this will now give you all values.
      

      【讨论】:

      • 感谢您的帮助..它有效,但我想将地图的值放入 request.setattribute
      【解决方案3】:

      您已经获得了属性的当前值并连接新的...尝试类似:

      String str = "";                
                  for(int i=0; i<sizearray.length; i++){
                      str += sizearray[i];                         
                      request.setAttribute("ssize", request.getAttribute("ssize") + str.substring(str.lastIndexOf("-") + 1));
                  }               
              out.println(request.getAttribute("ssize"));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-17
        • 2018-08-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多