Зарегистрированный пользователь может затем запустить действие на странице, которая обновляет пользователя в базе данных ( с использованием другого управляемого компонента ).
Тот же управляемый компонент , что и , должен был быть обновлен в этот момент. Если по какой-то причине вы не можете повторно использовать один и тот же управляемый bean-компонент, вам следует сделать это вручную, открыв его в методе action и вызвав сеттеры самостоятельно.
Обновление : основываясь на комментариях, вот как компоненты должны быть объявлены, введены и использованы в вашем конкретном требовании:
@ManagedBean(name="#{login}")
@SessionScoped
public class LoginManager {
private String username;
// ...
}
@ManagedBean(name="#{user}")
@RequestScoped
public class UserManager {
@ManagedProperty(value="#{login}")
private LoginManager login;
private User current;
@PostConstruct
public void init() {
current = userDAO.find(login.getUsername());
}
// ...
}
@ManagedBean(name="#{profile}")
@RequestScoped
public class ProfileManager {
@ManagedProperty(value="#{user}")
private UserManager user;
public void save() {
userDAO.save(user.getCurrent());
}
// ...
}
<h:form>
<h:inputText value="#{user.current.firstname}" />
<h:inputText value="#{user.current.lastname}" />
<h:inputText value="#{user.current.birthdate}" />
...
<h:commandButton value="Save" action="#{profile.save}" />
</h:form>