gpt4 book ai didi

java - 如何使 Bean 保持 Activity 状态以供可从过滤器和 EJB 访问的直通 session

转载 作者:行者123 更新时间:2023-12-02 04:22:51 25 4
gpt4 key购买 nike

我正在尝试为 Filter 中的 bean ModelBean 设置属性,并在 JSF Controller IndexController 中访问此属性。

ModelBean 被注释为 @SessionScoped,并通过 @Inject 在过滤器和 Controller 中使用。问题是创建了两个单独的实例,并且我无法访问在过滤器中设置的属性。

在整个 session 过程中保持 Bean 活力的最佳方法是什么?或者也许有更好的方法来从过滤器传递数据?

@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();
}
}

最佳答案

感谢@Kukeltje 提出研究软件包的建议。我还是不知道为什么包javax.faces.bean.SessionScoped我使用的并没有使bean保持 Activity 状态,而是将其替换为 javax.enterprise.context.SessionScoped成功了。该 bean 现在处于 Activity 状态并且可以传递数据。

关于java - 如何使 Bean 保持 Activity 状态以供可从过滤器和 EJB 访问的直通 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56625516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com