Como todos sabemos, a classe de ação do STRUT2 pode obter todos os valores relevantes por meio de atributos, como parâmetros de solicitação, parâmetros de configuração de ação, passando valores de atributo para outras ações (por meio de resultados da cadeia) etc. Para obter esses valores de parâmetros, a única coisa que precisamos fazer é declarar a propriedade com o mesmo nome que o parâmetro na classe de ação. Antes de Struts2 chamar o método de ação da classe de ação (o padrão é o método Execute), a propriedade de ação correspondente será atribuída.
Para concluir esta função, o STRUTS2 depende do objeto Valuestack em grande parte. Esse objeto é executado por todo o ciclo de ação de ação (cada instância do objeto da classe de ação terá um objeto de valuestack). Quando o Struts2 recebe uma solicitação .Action, ele primeiro criará uma instância do objeto da classe de ação, mas não chamará o método de ação, mas primeiro colocará as propriedades correspondentes da classe de ação no nó de nível superior do objeto Valuestack (o objeto de avaliação é equivalente a uma pilha). É apenas que todos os valores de atributo são valores padrão, como o valor do atributo do tipo de string é nulo, o valor do atributo do tipo int é 0, etc.
Após o processamento do trabalho acima, o STRUTS2 chamará o interceptador na cadeia interceptadora. Depois de chamar todos os interceptores, o método de ação da classe de ação será chamado. Antes de chamar o método de ação, o valor do atributo no nó de nível superior do objeto Valuestack será atribuído ao atributo correspondente na classe de ação. Todos devem prestar atenção, isso nos traz muita flexibilidade. Ou seja, durante o processo de Struts2 chamando o interceptador, o valor do atributo no objeto Valuestack pode ser alterado. Quando um determinado valor de atributo é alterado, o valor de atributo correspondente da classe de ação se tornará o valor da última alteração do atributo no interceptador.
A partir da descrição acima, é fácil saber que, na classe de ação do STRUTS2, você pode obter valores de parâmetros com o mesmo nome que o atributo, que são tratados por diferentes interceptores. Por exemplo, o interceptor que obtém os parâmetros de solicitação são os parâmetros, e o interceptador que obtém os parâmetros de configuração da ação é o StaticParams, etc. Leia os valores correspondentes dentro desses interceptores e atualiza os valores das propriedades correspondentes do nó de nível superior do objeto de avaliação. O objeto Valuestack é como uma correia transportadora, passando o valor do atributo de um interceptador para outro interceptador (é claro, durante esse período, o valor do atributo pode mudar) e, finalmente, passando -o para o objeto de ação e o valor final do atributo no objeto de valor é atribuído ao atributo correspondente da classe de ação.
Quando usamos expressões EL na camada de exibição, não podemos acessar não apenas as propriedades nos 11 objetos ocultos na expressão de EL, mas também acessar os valores da propriedade do objeto no Valuestack, porque o Struts2 encapsula ainda mais o httpServletRequest.
classe pública strutsRequestWrapper estende httpServletRequestwrapper {public strutsRequestWrapper (httpServletRequest req) {super (req);} public object getAttribute (string s) {...... actionContext ctx = actionContext.getConteConte (); object S) {... (ctx! = null) {if (attribute == null) {// Se o valor do atributo não for encontrado no intervalo de solicitações, ou seja, o valor do atributo do objeto é encontrado no valor do valor do valor do valor. valuestack ...}} retornar atributo;}}Resumir
O exposto acima é sobre este artigo sobre como o STRUT2 encapsula os parâmetros de solicitação, e espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!