【问题标题】:How to get boolean value with requst getAttribute java?java - 如何使用请求getAttribute java获取布尔值?
【发布时间】:2016-12-21 09:41:51
【问题描述】:

如何在请求中将布尔值设置为属性值。

考虑以下sn-p

protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException  {

 boolean isOriginal = (boolean) req.getAttribute(“isOriginalFile");
//Some code
}

请求可能包含/可能不包含isOriginalFile 属性。如何处理?

【问题讨论】:

    标签: java httprequest getattribute


    【解决方案1】:

    假设当属性为null 时获得false 是您所期望的:

    boolean isOriginal = Boolean.TRUE == req.getAttribute("isOriginalFile");
    

    然后,如果您将属性设置为除Boolean.TRUE 以外的任何其他值(包括null),您将获得false

    你可以用任何一种方式设置它:

    req.setAttribute("isOriginalFile", Boolean.TRUE);
    req.setAttribute("isOriginalFile", (Boolean) true);
    req.setAttribute("isOriginalFile", true);
    

    但不是字符串(因为它将被评估为false):

    req.setAttribute("isOriginalFile", "true");
    

    【讨论】:

    • 不错的一个!工作正常:-)
    【解决方案2】:

    解析getAttribute方法返回的值。

    boolean isOriginal = Boolean.valueOf(String.valueOf(req.getAttribute("isOriginalFile")));
    

    getAttribute 返回一个Object,Boolean.valueOf 方法接受一个String 参数。所以,先把返回的值转成String,然后解析。

    https://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html#valueOf(java.lang.String)

    【讨论】:

    • 应该是Boolean.valueOf(...),并且开头的报价需要修正
    • 已更正。谢谢!
    • 注意,如果没有这个属性,String.valueOf()会抛出NPE
    • @BalajiKrishnan, String.valueOf(Object) 不会抛出 NPE。由于req.getAttribute 的返回类型是Object,它将专门匹配重载String.valueOf(Object),所以它可以工作!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 2012-07-13
    相关资源
    最近更新 更多