Como o Spring 2.5 mapeia os dados de solicitação recebida para o comando modelattribute?

StackOverflow https://stackoverflow.com/questions/418178

  •  03-07-2019
  •  | 
  •  

Pergunta

Eu usei a primavera 2.0 e agora estou usando o Spring 2.5, naturalmente, a primavera 2.5 facilitou a vida muito fácil no que diz respeito aos controladores da web. A pergunta continua vindo em minha mente de que, em 2.0, tivemos que definir a classe de comando e, portanto, o abstractFormController usado para preencher esse objeto de comando para nós. Na primavera 2.5, não fazemos isso, então como vem saber qual classe usar? Depende do tipo de parâmetro que anotamos o @modelattribute ("comando")?

Se sim, informe -me qualquer classe "Utils" que forneça o mecanismo exato em que eu possa passar no httprequest e no nome da classe (ou objeto de classe) e que me devolveria o objeto povoado!

Espero que você tenha conseguido minha pergunta.

Desde já, obrigado.

Foi útil?

Solução

As anotações da Web MVC eventualmente dependem de um

org.springframework.beans.abstractpropertyAccessor

que tem duas implementações concretas:

org.springframework.beans.beanwrapperImpl org.springframework.beans.directfieldAccessor

Ambos aceitam um objeto Java, que será o alvo para definir as propriedades para.

O primeiro, o BeanWrapperImpl usa os métodos Setter/Getter de um objeto Java, enquanto o outro define os campos diretamente. Ambos os verifica se os métodos/campos são públicos/acessíveis e, se de outra forma, use o SetAccessible (true) da reflexão para garantir que ele possa ser definido.

A partir do MVC da Web, uma instância do AbstractPropertyAccessor é criada e o mapa de parâmetros de uma httprequest é passado para o AbstractPropertyAccessor#setPropertyValues.

Após a chamada, o objeto Java é preenchido com o que estiver no mapa

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top