我正在尝试在简单的java类中使用会话范围的bean。我的API会对第二个API进行调用。在拨打电话之前,我在会话bean中保存了一些状态。当问题发生时,用户转到第二个API并重定向回我的API。
我的会话bean是
@ManagedBean
@SessionScoped
public class SessionBean implements Serializable {
/** The Constant serialVersionUID. */
private static final long serialVersionUID = 1L;
/**
* The Json text of the query when the page is refreshed without saving edit changes.
*/
private String myJsonText;
public String getMyJsonText() {
return myJsonText;
}
public void setMyJsonText(String myJsonText) {
this.myJsonText = myJsonText;
}
///and many more properties
}
我的regaular java类基本上是一个RESTful POST,下面的方法叫做
@Path("/directory")
public class Directory {
private static final Logger logger = LoggerFactory.getLogger(Directory.class);
@POST
@Path("/create_query")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response createQuery(String queryString, @Context HttpServletRequest request) {
try(Config config = ConfigFactory.get()) {
HttpSession httpSession = request.getSession();
if (httpSession != null)
{
logger.error("session is not null: ");
}else {
logger.error("session is null : ");
}
SessionBean sessionBean = (SessionBean)httpSession.getAttribute("sessionBean");
if (sessionBean != null)
{
sessionBean.setMyJsonText(queryString);
logger.error("session is not null: ");
}else {
logger.error("session is null : ");
}
//This is done seperately to see that httpSession is not null but its attribute session bean is
//Some Database calls made.
Return user to a .xhtml page with a URL
}
}
}
现在在代码中注释,我想使用会话bean并设置其一个属性。但我得到会话bean为空的错误。 我知道访问它的问题是因为当我从最后一个函数中将用户带到.xhtml页面时,bean就会保存它的属性。所以它也没有超时。
我不想在这里用
创建一个新的会话bean SessionBean sessionBean = null;
sessionBean.setMyJsonText(queryString);
因为当我对第二个API进行POST调用时,我不想丢失其中的值。我使用@BalusC答案作为参考(我分两步完成。) BalusC's answer
可能是一个详细的教程或指南,这将是有帮助的。如果我在复活节假期前完成它,我将非常高兴:)
由于