Я пытаюсь установить свойство для bean-компонента ModelBean
в фильтре и получить доступ к этому свойству в контроллере JSF IndexController
.
ModelBean аннотирован @SessionScoped
и используется вфильтр и контроллер с @Inject
.Проблема заключается в том, что создаются два отдельных экземпляра, и я не могу получить доступ к свойству, которое я установил в фильтре.
Каков наилучший способ сохранить компонент в течение всего сеанса?Или, может быть, есть лучший способ передать данные из фильтра?
@SessionScoped
public class ModelBean{
private String deviceId;
public ModelBean() {
super();
}
public String getDeviceId() {
return deviceId;
}
public void setDeviceId(String deviceId) {
this.deviceId = deviceId;
}
}
@Provider
public class AuthRequestFilter implements Filter {
@Inject
ModelBean model;
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws
IOException, ServletException {
// the device id is set just fine
model.setDeviceId(deviceId);
filterChain.doFilter(servletRequest, servletResponse);
return;
}
}
@Named(value = "indexController")
public class IndexController {
@Inject
ModelBean model;
// the method **is* called from the xhtml
public String justAnExample() {
// this is the problem, the deviceId is null=>
return model.getDeviceId();
}
}