【问题标题】:What does request.getParameter return?request.getParameter 返回什么?
【发布时间】:2012-01-15 13:17:43
【问题描述】:

// index.jsp

<form method="post" action="backend.jsp">
<input type="text" name="one" />
<input type="submit value="Submit" />
</form>

在 backend.jsp 中 request.getParameter("one");回来?

request.getParameter("one").getClass().getName();

返回 java.lang.String,所以它一定是一个 String 对吧?

但是我做不到

String one = request.getParameter("one");
if (!"".equals(one)) {}

if (one != null) {}

这很明显,因为变量一不返回空值。是

if (one.length() > 0) {}

唯一的方法,还是有更好的解决方案或更好的方法?我正在考虑将这两种解决方案都放在 jsp 上。在这种情况下,使用 servlet(尽管 jsp 是 servlet)是一个不同的用例。

【问题讨论】:

  • 我建议您在提出此类问题之前先阅读 javadocs。它节省了每个人的时间。在这种特殊情况下,您似乎做出了不正确的假设,并且阅读 javadoc 会更正。
  • 感谢您强化我的意图。除了我的最后一段,我基本上是在说同样的事情,即在评论之前阅读 javadoc,这样人们就不会仓促评论或超出问题范围。在了解这些基础知识后,我想将人们引导至第三段。我没有直接做,对不起。干杯!!
  • 你为什么说我们不能做其他两种情况?

标签: java jsp


【解决方案1】:

根据Javadoc

将请求参数的值作为字符串返回,如果是 参数不存在。

请注意,可以提交一个空参数 - 这样该参数存在,但没有值。例如,我可以在 URL 中包含 &amp;log=&amp;somethingElse 以启用日志记录,而无需指定 &amp;log=true。在这种情况下,该值将是一个空字符串 ("")。

【讨论】:

    【解决方案2】:
    String onevalue;   
    if(request.getParameterMap().containsKey("one")!=false) 
    {
    onevalue=request.getParameter("one").toString();
    }
    

    【讨论】:

      【解决方案3】:

      if (one.length() &gt; 0) {}if (!"".equals(one)) {} 都将检查空的 foo 参数,如果提交的表单在 foo 文本字段中没有值,则会得到一个空参数。

      如果您有机会使用表达式语言来处理参数,您可以 在表达式中使用empty param.foo 访问它。

      <c:if test='${not empty param.foo}'>
          This page code gets rendered.
      </c:if>
      

      【讨论】:

      • 感谢您提醒我这一点。这确实是一个不错的解决方案(如果我不以自己的方式解决这个问题,我会使用它),但我更想知道人们是如何解决传统意义上的这个问题的。例如,如果在某些情况下您可能会破坏或破坏代码(例如 NullPointerException),则仅在检查长度时。它返回字符串,但我错过了什么吗?
      • 如果您的表单中缺少 ,您可能会收到 NullPointerException,因为此时参数将为 null。
      猜你喜欢
      • 2015-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-02
      • 2014-09-21
      • 2021-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多