1

「bookingService.findBookings(currentUser?.name)」部分の疑問符の意味を知っている人はいますか?

<view-state id="enterSearchCriteria">
    <on-render>
        <evaluate expression="bookingService.findBookings(currentUser?.name)" result="viewScope.bookings" result-type="dataModel" />
    </on-render>
    <transition on="search" to="reviewHotels"/>
    <transition on="cancelBooking">
        <evaluate expression="bookingService.cancelBooking(bookings.selectedRow)" />
    </transition>
</view-state>

サービスクラスのメソッドは次のとおりです。

@Transactional(readOnly = true)
    @SuppressWarnings("unchecked")
    public List<Booking> findBookings(String username) {
        if (username != null) {
            return em.createQuery("select b from Booking b where b.user.username = :username order by b.checkinDate").setParameter("username", username).getResultList();
        } else {
            return null;
        }
    }

現在のユーザーは、現在アプリにログインしている人を想定していますが、スニペットはユーザーがまだログインしていないページからのものです。

4

1 に答える 1

3

それは「安全なナビゲーションオペレーター」のようです。currentUser が null の場合、currentUser?.name へのアクセス試行はエラーになりません (null ポインタ)。

于 2013-03-19T17:32:02.960 に答える