ich folgendes haben:aktualisiert JSF Modell funktioniert nicht
Ausblick:
<h:form class="form-signin">
<h:inputText id="name" name="name" value="#{userCabinetController.user.name}" required="true" requiredMessage="Поле имя не заполнено" class="form-control" type="name"/>
<h:inputText id="email" name="email" value="#{userCabinetController.user.email}" required="true" requiredMessage="Введите логин (email)" class="form-control" type="email"/>
<h:inputSecret id="password" name="password" value="#{userCabinetController.user.password}" required="true" requiredMessage="Введите пароль" class="form-control" type="password"/>
<h:commandButton action="#{userCabinetController.updateUser}" value="Изменить данные" class="btn btn-lg btn-primary btn-block"/>
</h:form>
Controller:
@Named
@ViewScoped
public class UserCabinetController {
@PostConstruct
public void init() {
/**
* get user instance for further updating
*/
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
Map<String, Object> sessionMap = externalContext.getSessionMap();
User userFromSession = (User) sessionMap.get("user");
int userId = userFromSession.getId();
user = userFacade.finById(userId);
}
private User user;
@Inject
UserFacade userFacade;
public void updateUser() {
System.out.println(user);
userFacade.updateUser(user);
}
// getters/setters
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
und Fassade:
@ApplicationScoped
public class UserFacadeImpl implements UserFacade, Serializable{
@PersistenceContext
private EntityManager em;
@Transactional
public void updateUser(User user) {
em.merge(user);
}
}
Aber wenn ich versuche, um die Benutzerinstanz zu aktualisieren gibt es dieselbe, d.h. die alte Instanz, ohne neue Werte zu geben.
Wie Benutzerinstanz aktualisieren? Was ist falsch?
wenn Sie Ajax nicht verwenden, wird die Anfrage Umfang genug für den Controller. Melden Sie sich in der Init-Methode an, um zu sehen. Ob es eine neue Controller-Instanz erstellt? (Welches Paket importieren Sie aus der Annotation RequestScoped?) –
Welche Version von jsf verwenden Sie? Bitte beachten Sie http://inceptetechnologies.blogspot.in/2013/05/jsf22-viewscope-using-cdi.html?m=1 für Versionsprobleme mit Viewscoped – OTM