Как передать значение JSF InputText слушателю ajax - PullRequest
0 голосов
/ 25 апреля 2018

Я хочу передать значение в поле ввода слушателю ajax.Пожалуйста, обратитесь к следующему коду.

JSF:

<h:dataTable id="cleanerAttendance" value="#{bean.objMap.entrySet().toArray()}">
    <h:column> 
        <f:facet name="header">
            <div>Attendance</div>
        </f:facet>
        <div>
            <h:inputText value="entry.value">
                <f:ajax execute="@this" listener="#{bean.updateMap(entry)}"/>
            </h:inputText>
        </div>
    </h:column>
</h:dataTable>

Bean:

private Map<Obj2,Integer> objMap = new HashMap<Obj2,Integer>();

public void updateMap(Entry<Obj2,Integer> entry){
    System.out.println(entry.getValue());
    objMap.put(entry.getKey(), entry.getValue());
}

Я хочу обновить objMap при изменении входного значения.Но когда я запускаю это, вызывается метод updateMap.Но entry.getValue() печатается как null.Кто-нибудь знает, почему это не работает, и правильный способ сделать это?

Я уже проверил следующие ответы, и это не сработало для меня.

Передать значение h: inputText вслушатель f: ajax

Как передать параметр в f: ajax в h: inputText?f: параметр не работает

1 Ответ

0 голосов
/ 25 апреля 2018

Я бы сделал это по-другому.Сначала предоставьте получатель для карты:

public Map<Obj2,Integer> getObjMap(){
  return objMap;
}

Затем выполните итерации по ключам и установите значение на основе ключа, который вас интересует:

<h:dataTable id="cleanerAttendance" value="#{bean.objMap.keySet().toArray()}" var="obj">
    <h:column> 
        <f:facet name="header">
            <div>Attendance</div>
        </f:facet>
        <div>
            <h:inputText value="#{bean.objMap[obj]}">
                <f:ajax execute="@this" />
            </h:inputText>
        </div>
    </h:column>
</h:dataTable>

Это в основном вызоветОбновление модели после каждого события, связанного с ajax, не требует прослушивателяСам не проверял, так что попробуйте!

См. Также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...