【】 SpringMVC thymeleaf SpringMVC 整合 thymeleaf

contorno

Thymeleaf Spring proporciona un conjunto integrado de, por lo que se puede utilizar como una aplicación Spring MVC en JSP alternativas de todas las funciones.

La integración le permitirá:

  • @Controller lo mismo que usar JSP, el procedimiento de correlación Spring MVC objeto hacia adelante a la gestión thymeleaf plantilla.
  • utilizar el lenguaje de Primavera expresión (Primavera EL) en la plantilla en lugar de OGNL.
  • Crear una plantilla de formulario y el apoyo forma de grano y se unen a los resultados totalmente integrada, incluyendo el uso de editores de propiedades, conversión y tratamiento de errores servicio de validación.
  • gestión internacional pantalla de mensajes archivo de mensajes en la primavera (por objetos MessageSource convencionales).
  • Usar el propio mecanismo de resolución de los recursos de la primavera para resolver su plantilla.

thymeleaf mismo hecho un resorte de integración, por lo que no hay que hacer mucho de configuración, se puede lograr los resultados que queremos. integración thymeleaf proporciona dos métodos: ①, notas de configuración, que es el código java, ②, archivo XML con la configuración, este artículo se centra en la segunda configuración xml.

Se puede llegar al punto de conocimiento:

1, la integración SpringMVC thymeleaf
2, utilizando tres modelo proporcionado por el muelle
3, la thymeleaf frontal no resuelve la entrada html en vigor (véase la pregunta 1)
4, la pantalla frontal HTML resolver el problema de la basura (véase la pregunta 2)

@

SpringMVC thymeleaf integración

A: Agregar la dependencia

En SpringMVC la que, además de añadirse thymeleafque no sea la dependencia primaria, necesidad thymeleaf-spring4, de lo contrario serán reportados org.thymeleaf.spring4.view.ThymeleafViewResolver, el analizador no puede encontrar thymeleaf, que thymeleaf-spring4también es esencial.

Thymeleaf haber integrado para el Spring Framework 3.x 4.x, por dos bibliotecas independientes mencionados thymeleaf-Spring3 y proporcionar thymeleaf-Spring4. Estas bibliotecas son empaquetados en el archivo .jar separado (thymeleaf-spring3- {version} .jar y thymeleaf-spring4- {version} .jar), es necesario añadir la ruta de clase, para su uso en aplicaciones de integración thymeleaf primavera

.

        <!--        thymeleaf-->
        <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf-spring4</artifactId>
            <version>3.0.11.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf</artifactId>
            <version>3.0.11.RELEASE</version>
        </dependency>

Dos: Conjunto analizador thymeleaf

perfil de configuración del analizador SpringMVC thymeleaf, documentos oficiales thymeleaf proporciona una implementación de las dos interfaces anteriores:

org.thymeleaf.spring4.view.ThymeleafView
org.thymeleaf.spring4.view.ThymeleafViewResolver

Pero ahora se ha org.thymeleaf.spring4.view.ThymeleafViewResolverreemplazado, en cuanto a si la configuración anterior también puede tener efecto, es a usted para probar el.

 <!-- thymeleaf 模板解析器 -->
    <bean id="templateResolver" class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver">
        <property name="prefix" value="/" />
        <property name="suffix" value=".html" />
        <property name="templateMode" value="HTML" />
        <property name="cacheable" value="false" />
        <property name="characterEncoding" value="UTF-8"/>
    </bean>

    <bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine">
        <property name="templateResolver" ref="templateResolver" />
    </bean>

    <!--    视图解析器-->
    <bean id="viewResolver" class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
        <property name="templateEngine" ref="templateEngine" />
        <property name="characterEncoding" value="UTF-8"/>
    </bean>

ViewResolvers es responsable de la obtención de la operación objeto específico y la configuración regional Ver objeto. Típicamente, el controlador requiere ViewResolvers remitidos a la vista (el método que devuelve la cadena de controlador) con un nombre particular, a continuación, todas las aplicaciones en vista de la cadena de resolución se ordenará a cabo hasta uno es capaz de resolver este punto de vista. Si devuelve el objeto View, y pasa el control al objeto a representar HTML.

Nota: Es de destacar que , si juego de resortes de vista de resolución, que debe ser comentado, de lo contrario thymeleaf analizador puede no ser eficaz, debido a esto me depuración mucho tiempo, finalmente encontró el problema.

    <!--    配置视图解析器 prefix:前缀, suffix:后缀   使用thymeleaf需要将其注释掉-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"/>
        <property name="suffix" value=".html"/>
    </bean>

Tres: el controlador de escritura

Necesidad de transferencia de datos de la capa de control a la vista, se utilizará el modelo, el modelo de tres comúnmente utilizado es: Modelo, una ModelMap, ModelAndView . Al utilizar estos tres modelos, Spring Framework crea automáticamente una instancia del controlador como una referencia, los usuarios no necesitan crear su propio

1, Modelo

    /**
     * 在Model里存入一个用户信息
     * @return hello页面
     */
    @GetMapping("returnModelAndView")
    public String returnModelAndView(Model model){
        model.addAttribute("userInfo",new UserInfo("lomtom","123",new Address("湖南","邵阳")));
        return "hello";
    }

Modelo es una interfaz,
Modelo Fuente:

public interface Model {
    Model addAttribute(String var1, Object var2);

    Model addAttribute(Object var1);

    Model addAllAttributes(Collection<?> var1);

    Model addAllAttributes(Map<String, ?> var1);

    Model mergeAttributes(Map<String, ?> var1);

    boolean containsAttribute(String var1);

    Map<String, Object> asMap();
}

2, ModelMap

ModelMap heredó LinkedHashMap
ModelMap Fuente:

public class ModelMap extends LinkedHashMap<String, Object> {
    public ModelMap() {
    }

    public ModelMap(String attributeName, Object attributeValue) {
        this.addAttribute(attributeName, attributeValue);
    }

    public ModelMap(Object attributeValue) {
        this.addAttribute(attributeValue);
    }

    public ModelMap addAttribute(String attributeName, Object attributeValue) {
        Assert.notNull(attributeName, "Model attribute name must not be null");
        this.put(attributeName, attributeValue);
        return this;
    }

    public ModelMap addAttribute(Object attributeValue) {
        Assert.notNull(attributeValue, "Model object must not be null");
        return attributeValue instanceof Collection && ((Collection)attributeValue).isEmpty() ? this : this.addAttribute(Conventions.getVariableName(attributeValue), attributeValue);
    }

    public ModelMap addAllAttributes(Collection<?> attributeValues) {
        if (attributeValues != null) {
            Iterator var2 = attributeValues.iterator();

            while(var2.hasNext()) {
                Object attributeValue = var2.next();
                this.addAttribute(attributeValue);
            }
        }

        return this;
    }

    public ModelMap addAllAttributes(Map<String, ?> attributes) {
        if (attributes != null) {
            this.putAll(attributes);
        }

        return this;
    }

    public ModelMap mergeAttributes(Map<String, ?> attributes) {
        if (attributes != null) {
            Iterator var2 = attributes.entrySet().iterator();

            while(var2.hasNext()) {
                Entry<String, ?> entry = (Entry)var2.next();
                String key = (String)entry.getKey();
                if (!this.containsKey(key)) {
                    this.put(key, entry.getValue());
                }
            }
        }

        return this;
    }

    public boolean containsAttribute(String attributeName) {
        return this.containsKey(attributeName);
    }
}

3, utilizando ModelAndView

    /**
     * 在ModelAndView里存入一个用户信息
     * @return ModelAndView 
     */
    @GetMapping("returnModelAndView")
    public ModelAndView returnModelAndView(ModelAndView modelAndView){
        modelAndView.setViewName("hello");
        modelAndView.addObject("userInfo",new UserInfo("lomtom","123",new Address("湖南","邵阳")));
        return modelAndView;
    }

ModelAndView nombre indica es una combinación de modelos y tratando.
ModelAndView Fuente:

public class ModelAndView {
    private Object view;
    private ModelMap model;
    private HttpStatus status;
    private boolean cleared = false;

	......
}

Cuatro: escribir html

En primer lugar, escribir un enlace, solicitud de returnModelAndViewpetición.

<a href="returnModelAndView">ModelAndView</a>

Luego, escribe la página hello.html para la validación

<h2>你好啊,你成功了</h2>
<p th:text="${userInfo.userName}+'来自'+${userInfo.address.province}+${userInfo.address.city}"></p>

Cinco resultados:

Seis: Grabar mi problema

Pregunta 1 : Después de configurar todo, thymeleaf no se puede resolver, todos exhibidos en thymeleaf no son eficaces.
Resuelve : Desde configuré la primavera de vista de la resolución, lo que resulta en thymeleaf de tratar de resolver no podía ser eficaz, a fin de obtener la primavera deshacerse de vista resolución.

thmelaf introducir SpringMVC resolución vista:
navegar rápidamente sus propiedades suficientes para entender cómo está configurado:

  • Ver viewClass establecer instancia de clase. El analizador JSP, que es necesaria, pero cuando cooperamos con thymeleaf, no es necesario.
  • Un trabajo similar con suffixThymeleaf TemplateResolver prefijo de objetos del mismo atributo de nombre.
  • ViewResolver orden consulta orden se determina en la cadena.
  • viewNames ViewResolver resolver este permite que el nombre de la vista (con comodines).

Pregunta 2 : Frente ilegible, el cumplimiento específico no se pasa en el fondo confuso, pero ilegible que existen en html.
Resuelve : En un intento de añadir parámetros y analizador analizador de plantilla:<property name="characterEncoding" value="UTF-8"/>

Los autores tienen algo que decir

Puede que no escribir en detalle cómo, por favor ver la configuración detallada thymeleaf descripción oficial: Portal , al final, todo de lectura, y si tiene ayuda, por favor señalar un elogio él.

Supongo que te gusta

Origin www.cnblogs.com/lomtom/p/12635945.html
Recomendado
Clasificación