У меня возникла проблема с передачей данных между JSF-компонентами. Я хочу, когда я вхожу в систему, передаю имя пользователя следующему компоненту, где я могу его использовать. Я нашел много вещей об этом, но я не могу заставить его работать в моем проекте. У меня есть UserService, где я могу управлять своими пользователями. Здесь есть метод getUsers (имя пользователя). Теперь я пытаюсь передать имя пользователя, чтобы получить свой пользовательский объект.
хтмл:
<h:link outcome="changeProfile" value="Change profile">
<f:param name="username" value="#{userBean.username}" />
</h:link>
ИзменитьПрофилеБин:
@Component("changeProfile")
@ManagedBean
@RequestScoped
public class ChangeProfileBean implements Serializable {
private UserService userService;
private User user;
@ManagedProperty("#{param.username}")
private String username;
@PostConstruct
public void init(){
FacesContext facesContext = FacesContext.getCurrentInstance();
this.username = facesContext.getExternalContext().getRequestParameterMap().get("username");
try {
if(username != null){
user = userService.getUser(username);
}
} catch (UserServiceException e) {
e.printStackTrace();
}
}
@Autowired
public ChangeProfileBean(UserService userService) {
this.userService = userService;
}
Что происходит, так это то, что changeUserbean будет создан при запуске приложения. И сразу после этого запускается @PostConstruct, где имя пользователя явно равно нулю. Но когда я вызываю changeUserBean, он больше не выполняет @PostConstruct. Кто-нибудь знает, что я могу сделать?
Пользовательский компонент:
@Component("userBean")
@Scope("session")
public class UserBean implements Serializable
{
@Autowired
private UserService userService;
@Autowired
private RepairService repairService;
private String username;
private String password;
ChangeProfileBean
. 18.01.2014