使用struts2进行全局会话

使用struts2进行全局会话,struts2,Struts2,我希望使用struts在全局会话中维护一个对象列表,这样,如果有多个用户正在编辑该列表,那么每个用户都应该看到更新的列表 @Action(value = "/listAuthoredFiles", results = { @Result(name = "success", type = "json", params = { "excludeProperties", "gridModel.*\\.*Map, gridModel.*\\.*List" }) }) public Stri

我希望使用struts在全局会话中维护一个对象列表,这样,如果有多个用户正在编辑该列表,那么每个用户都应该看到更新的列表

   @Action(value = "/listAuthoredFiles", results = { @Result(name = "success", type = "json", params = {
    "excludeProperties", "gridModel.*\\.*Map, gridModel.*\\.*List" }) })
public String execute() throws Exception {

    log.debug("Page: " + getPage() + " Rows: " + getRows() + " Sorting Order: " + getSord() + " Index Row: " + getSidx());

   List<FilterParameter> filters = getFilterParameters();
   List<UserVO> gridModel = new ArrayList<UserVO>();
   if (!CommonUtil.isEmpty(filters)) {
        gridModel = searchService.findByCriteria(filters);
     } else {
        log.debug("filters is empty");
    }
    ActionContext.getContext().getSession().put(SearchConstants.LIST_AUTHORED_FILES, gridModel);
@Action(value=“/listAuthoredFiles”,results={@Result(name=“success”,type=“json”,params={
“excludeProperties”、“gridModel.\\\.*映射、gridModel.\\\\.*列表”})
公共字符串execute()引发异常{
调试(“页面:“+getPage()+”行:“+getRows()+”排序顺序:“+getSord()+”索引行:“+getSidx()”);
列表过滤器=getFilterParameters();
List gridModel=new ArrayList();
如果(!CommonUtil.isEmpty(过滤器)){
gridModel=searchService.findByCriteria(过滤器);
}否则{
调试(“过滤器为空”);
}
ActionContext.getContext().getSession().put(SearchConstants.LIST_编写的_文件,gridModel);
在另一个action类中,我正在访问列表:

    if (MapUtils.isNotEmpty(ActionContext.getContext().getSession())
            && ActionContext.getContext().getSession().containsKey(SearchConstants.LIST_AUTHORED_FILES)) {
  List<UserVO> gridModel = (List<UserVO>) ActionContext.getContext().getSession()
                    .get(SearchConstants.LIST_AUTHORED_FILES);   
if(MapUtils.isNotEmpty(ActionContext.getContext().getSession())
&&ActionContext.getContext().getSession().containsKey(SearchConstants.LIST_编写的_文件)){
List gridModel=(List)ActionContext.getContext().getSession()
.get(SearchConstants.LIST_编写的_文件);

但这里的问题是,如果我进入会话,并且如果有多个用户访问此列表,则用户可能看不到更新的列表,因为我将列表存储在用户会话中,而不是全局会话级别。因此,是否有任何方法将列表存储在全局会话级别。

请共享更多详细信息。代码将在特别是你的“GlobalSession”通常被称为“application scope”。如果你搜索Stackoverflow,你会找到很多问题的答案。附带说明:Spring(这是解决问题的一种方法)实际上提供了一个全局会话作用域,这绝对不是您想要的。@Stefan使用spring我们可以做到这一点,但我希望使用您建议的struts应用程序作用域。我们可以在应用程序作用域中设置如下列表
ServletActionContext.getContext().getApplication().put(键,值)
在一个action类和另一个action类中,我们应该检查应用程序范围中是否有列表。我只是想让您知道,在Spring的情况下,术语“全局会话”可能会产生误导。是的,这应该有效。请分享更多详细信息。代码将被欣赏您的“全局会话”通常称为“应用程序范围”。如果您搜索Stackoverflow,您应该会找到很多问题的答案。旁注:Spring(这将是解决问题的一种方法)实际上提供了一个全局会话作用域,这绝对不是您想要的。@Stefan使用spring我们可以做到这一点,但我希望使用您建议的struts应用程序作用域。我们可以在应用程序作用域中设置如下列表
ServletActionContext.getContext().getApplication().put(键,值)
在一个action类和另一个action类中,我们应该检查应用程序范围中是否有列表。我只是想让您知道,在Spring的情况下,术语“全局会话”会误导您。是的,这应该有效。