Como todos sabemos, la clase de acción de Strut2 puede obtener todos los valores relevantes a través de atributos, como parámetros de solicitud, parámetros de configuración de acción, pasar valores de atributos a otras acciones (a través de los resultados de la cadena), etc. Para obtener estos valores de parámetros, lo único que tenemos que hacer es declarar la propiedad con el mismo nombre que el parámetro en la clase de acción. Antes de que STRUTS2 llame al método de acción de la clase de acción (el valor predeterminado es el método de ejecución), se asignará la propiedad de acción correspondiente.
Para completar esta función, Struts2 depende del objeto ValueStack en gran medida. Este objeto se ejecuta a través de todo el ciclo de acción de vida (cada instancia de objeto de clase de acción tendrá un objeto ValueStack). Cuando Struts2 recibe una solicitud de .action, primero creará una instancia del objeto de clase de acción, pero no llamará al método de acción, pero primero ubicará las propiedades correspondientes de la clase de acción en el nodo de nivel superior del objeto ValuPack (el objeto ValueStack es equivalente a una pila). Es solo que todos los valores de atributo son valores predeterminados, como el valor de atributo del tipo de cadena es nulo, el valor de atributo del tipo int es 0, etc.
Después de procesar el trabajo anterior, Struts2 llamará al interceptor en la cadena del interceptor. Después de llamar a todos los interceptores, se llamará al método de acción de la clase de acción. Antes de llamar al método de acción, el valor de atributo en el nodo de nivel superior del objeto ValuPaCtack se asignará al atributo correspondiente en la clase de acción. Todos deberían prestar atención, esto nos trae mucha flexibilidad. Es decir, durante el proceso de Struts2 llamando al Interceptor, se puede cambiar el valor del atributo en el objeto ValueStack. Cuando se cambia un cierto valor de atributo, el valor de atributo correspondiente de la clase de acción se convertirá en el valor del último cambio del atributo en el interceptor.
De la descripción anterior, es fácil saber que en la clase de acción de Struts2, puede obtener valores de parámetros con el mismo nombre que el atributo, que son manejados por diferentes interceptores. Por ejemplo, el interceptor que obtiene los parámetros de solicitud son los parámetros, y el interceptor que obtiene los parámetros de configuración de acción es staticparams, etc. Lea los valores correspondientes dentro de estos interceptores y actualice los valores de las propiedades correspondientes del nodo de nivel superior del objeto ValuTack. El objeto ValueStack es como una cinta transportadora, pasando el valor del atributo de un interceptor a otro interceptor (por supuesto, durante este tiempo, el valor del atributo puede cambiar) y finalmente pasarlo al objeto de acción, y el valor final del atributo en el objeto ValueStack se asigna al atributo correspondiente de la clase de acción.
Cuando usamos las expresiones EL en la capa de visualización, no solo podemos acceder a las propiedades en los 11 objetos ocultos en la expresión EL, sino también acceder a los valores de la propiedad del objeto en ValueSestack, porque Struts2 encapsula aún más httpservletRequest.
StrutsRequestWrapper de clase pública extiende httpservletRequestWrapper {public StrutsRequestWrapper (httpservletRequest req) {super (req);} public object getAttribute (String s) {...... ActionContext ctx = ActionContext.getContext (); Object Attribe Rango de solicitud if (ctx! = null) {if (attribute == null) {// Si el valor de atributo no se encuentra desde el rango de solicitud, es decir, el valor de atributo del objeto se encuentra desde valueSestack ... valueStack stack = ctx.getValuStack (); // Objetos de valueStack ValueSestack ...}} Atributo de retorno;}}Resumir
Lo anterior se trata de este artículo sobre cómo Strut2 encapsula los parámetros de solicitud, y espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a otros temas relacionados en este sitio. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!