类'java.util.HashMap $ Node'没有可写的属性'value'。更新selectOneMenu值时发生异常

时间:2019-03-30 22:25:49

标签: java jsf

我在DataTable中有一个selectOneMenu。当单击DataTable行中的按钮时,我想使用selectOneMenu的选定项获得选定的行。我正在使用HashMap条目集来获取值。最后,我试图用相应的对象更新entry的值。但是,这引发异常javax.el.PropertyNotWritableException:类'java.util.HashMap $ Node'没有可写的属性'value'。

请在下面找到代码。

    <p:dataTable value="#{channelListPartialBean.pendingBookingsMap.entrySet()}"
                 var="bookingsMap">
        <p:column headerText="Telephone number">
            <h:outputText value="#{bookingsMap.key.telephoneNumber.telephoneNumber}"/>
        </p:column>
        <p:column headerText="Booking Reference">
            <h:outputText value="#{bookingsMap.key.bookingReference}"/>
        </p:column>
        <p:column headerText="Name">
            <p:selectOneMenu id="city" value="#{bookingsMap.value}"
                             style="width:150px">
                <f:selectItem itemLabel="New Patient" itemValue="#{null}" noSelectionOption="true"/>
                <f:selectItems value="#{bookingsMap.key.telephoneNumber.patients}" var="patient"
                               itemValue="#{patient}"
                               itemLabel="#{patient.firstName} #{patient.lastName}"/>
            </p:selectOneMenu>
        </p:column>
        <p:column headerText="Action">
            <p:commandButton value="Start" ajax="false"
                             action="#{channelListPartialBean.start(bookingsMap)}"/>
        </p:column>
    </p:dataTable>

还有Bean方法。

public Map<Booking, Patient> getPendingBookingsMap() {

    Map<Booking, Patient> bookingPatientMap = pendingBookings
            .stream()
            .collect(Collectors.toMap(b -> b, c -> new Patient()));
    return bookingPatientMap;
}

我在这里感到困惑,因为Map.Entry具有setValue()方法并且可写。提前致谢。

0 个答案:

没有答案