Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java8,JSP-应该将可选对象放在request.setAttribute()或session.setAttribute()中吗?_Jsp_Servlets_Serialization_Java 8_Optional - Fatal编程技术网

Java8,JSP-应该将可选对象放在request.setAttribute()或session.setAttribute()中吗?

Java8,JSP-应该将可选对象放在request.setAttribute()或session.setAttribute()中吗?,jsp,servlets,serialization,java-8,optional,Jsp,Servlets,Serialization,Java 8,Optional,我意识到Java可选Ojbect是不可序列化的。我还意识到使用Optional对象的主要目的是用于方法返回类型 根据以下方法: public Phone(){ public Optional<Phone> getPhone(){ // some logic goes here to create a new phone object and then put it in optional... } } 如果需要设置可选属性,它有什么用途?如果可选

我意识到Java可选Ojbect是不可序列化的。我还意识到使用Optional对象的主要目的是用于方法返回类型

根据以下方法:

public Phone(){
    public Optional<Phone> getPhone(){
          // some logic goes here to create a new phone object and then put it in optional...
    }
}
  • 如果需要设置可选属性,它有什么用途?如果
    可选
    ,请不要这样做

  • 见1

  • 没有。该模式更倾向于大致如下:

    getPhone()
        .map(phone -> Request.withPhone(phone))
        .orElse(Request.withoutPhone())
    
    建议不要使用
    isPresent
    get
    ,因为这不是处理
    可选
    的惯用(声明性)方法。将其与我(伪科迪什)的建议进行比较


  • 请您提供更多详细信息。withPhone()或withoutPhone()方法?这里这个问题的主要目的是理解通过使用Optional.Sry将数据对象传递到JSP页面的正确方法,我认为主要目的是如何正确处理第三个问题的最后一部分指出的
    Optional
    。我可以问一下这个请求的接收者长什么样吗?我理解可选属性要么存在要么不存在,因此在
    optional
    为空的情况下什么也不做(
    None
    ,而不是
    Some(value)
    )。
    //put Phone object in request/session.
    request.setAttribute("phoneObject", optionalPhone.orElseGet(Phone::new));
    
    getPhone()
        .map(phone -> Request.withPhone(phone))
        .orElse(Request.withoutPhone())