Struts2 ActionContext and ValueStack?

前端 未结 2 1521
遇见更好的自我
遇见更好的自我 2021-01-14 08:38

My questions are:

  1. In Struts2, does every action object have its own corresponding ActionContext and ValueStack?

In other words, for every new re

相关标签:
2条回答
  • 2021-01-14 09:01

    Q1. There is one ActionContext and there is only one ValueStack.

    Q2.

    Does this mean that previous ActionContext and ValueStack (related to action1) gets destroyed and a new ActionContext and ValueStack (for action2) gets created?

    No.

    Q3. I don't understand this question. What I think is missing is awareness of ThreadLocal so although there is one ActionContext each thread is able to have its own variables which are local to that thread and thus action scope for the ValueStack is maintained this way.

    0 讨论(0)
  • 2021-01-14 09:06
    1. Yes
    2. Yes after action execution clean up will be done.

      //SourceCode from StrutsPrepareAndExecuteFilter.
      
      //Cleans up a request of thread locals
      
      public void cleanupRequest(HttpServletRequest request) {
      
        Integer counterVal = (Integer) request.getAttribute(CLEANUP_RECURSION_COUNTER);
        if (counterVal != null) {
            counterVal -= 1;
            request.setAttribute(CLEANUP_RECURSION_COUNTER, counterVal);
            if (counterVal > 0 ) {
                if (log.isDebugEnabled()) {
                    log.debug("skipping cleanup counter="+counterVal);
                }
                return;
            }
        }
      
        // always clean up the thread request, even if an action hasn't been executed
        ActionContext.setContext(null);
        Dispatcher.setInstance(null);
      }
      

    3.Yes, If you want that data available in the next action use chain(not suggestible).

    0 讨论(0)
提交回复
热议问题