У меня есть bean-объект в области видимости ManageFoo.java:
@ManagedBean(name = "ManageFoo")
@ViewScoped
public class ManageFoo {
@ManagedProperty(value = "#{currentRow}")
private Foo currentRowBean;
.
.
public void setCurrentRowBean(Foo foo) {...}
public Foo getCureentRowBean() {...}
public void edit(ActionEvent e) {
getCurrentRowBean();
.
.
}
}
У меня есть файл facelets ManageFoo.xhtml:
<h:dataTable value=#{ManageFoo.foos} var="currentRow">
<h:column>
<h:commandLink actionListener="#{ManageFoo.edit}"/>
.
.
Когда нажата команда 'linkLink',однако 'getCurrentRowBean' возвращает ноль.
У меня это работает нормально, используя FacesContext и вспомогательный метод getBean ("currentRow"), но я пытаюсь "JSF 2ify" моего веб-приложения, используя ManagedProperty, ManagedBean'sи т. д. Я просто не реализую это должным образом или пытаюсь использовать ManageProperty так, чтобы это не имело смысла?
После обратной связи от Balus его решение хорошо работает для моих методов действий, но я 'У меня возникли проблемы с его работой для методов, которые возвращают значения (например, логические).Следующий метод используется в связке «визуализированных» атрибутов для каждой строки.Например, если вы редактируете определенную строку, все другие кнопки редактирования в других строках исчезают, а кнопка редактирования для текущей строки заменяется кнопкой отмены редактирования и кнопкой сохранения.Итак, этот метод имеет разные возвращаемые результаты для каждой строки:
public boolean isCurrentRowEditing() {
if(getCurrentRowDataBean().equals(getCurrentDataEditing())) {
return true;
} else {
return false;
}
}
Поскольку я пытаюсь исключить метод getCurrentRowDataBean () везде, мне нужен способ, чтобы это работало.