Предполагая, что вы действительно находитесь внутри повторяющегося компонента, где #{emp}
предоставляется его атрибутом var
, вы можете просто извлечь его из области видимости EL внутри слушателя изменения значения следующим образом:
FacesContext context = FacesContext.getCurrentInstance();
Employee employee = context.getApplication().evaluateExpressionGet(context, "#{emp}", Employee.class);
Long id = employee.getId();
// ...
В качестве альтернативы, если вы оберните value
из <h:dataTable>
в DataModel<Employee>
, то вы можете получить текущую строку следующим образом:
Employee employee = model.getRowData();
Long id = employee.getId();
// ...
Не связано с конкретной проблемой, нет необходимости иметь два метода слушателя для изменения значения. Обратите внимание, что valueChangeListener
дает вам возможность получить как старое, так и новое значение по событию, а p:ajax listener
нет, новое значение уже установлено в качестве значения модели в этой точке. Если вам нужно как старое, так и новое значение, удалите атрибут listener
<p:ajax>
. Кстати, event="valueChange"
уже является событием по умолчанию, поэтому просто удалите его.