簡體   English   中英

如何在JSPX中處理Optionals?

[英]How to handle Optionals in JSPX?

我們有幾個具有可空字段的域對象。 我們已經讀過hibernate需要'raw'對象來正確映射它,所以我們的getter返回選項。 我們的域對象如下所示:

public class User {

    private String firstName;

    private User boss;

    public Optional<String> getFirstName(){
        ....
    }

    public Optional<User> getBoss() {
        ...
    }
}

但是現在我們在.jspx文件中解析/綁定這些字段時遇到了問題。 (無論是顯示還是表單輸入字段。)對於原始類型和字符串,我們可以通過定義自定義OptionalToStringConverter來繞過它。

還有一個問題是對其他域對象的可空引用。

我們考慮了幾個選項,但對它們中的任何一個都不滿意:

  • 為所有域對象和類型定義自定義轉換器(會導致許多轉換器,並且似乎不適用於輸入字段)
  • 在每個域對象上定義可選和非可選的getter(1.重復代碼,2。我們想要清楚地指示可空字段,3。不同地訪問可選字段和非可選字段感覺不干凈)
  • 定義一個'show command',它返回'raw'值或null(重復代碼)
  • 定義處理選項的自定義標記(當域對象變為非可選時,我們必須更改標記x)

我們想知道在jspx中是否有一種很好的方法來解決選項。

在表單綁定方面,Spring處理得非常好:例如,它會將下面的第一個值映射到Optional.empty() ,將第二個和第三個值映射到相應的Optional<Boolean>

<form:select path="anOptionalBoolean">
    <form:option value="" label="Not Specified"/>
    <form:option value="true" label="Yes"/>
    <form:option value="false" label="No"/>
</form:select>

在顯示值方面,我沒有找到比在EL表達式中使用.get.present等更好的東西。 它確實使得代碼非常繁瑣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM