Thymeleaf 教程

链接表达式

链接表达式顾名思义就是用来动态计算、设置链接的表达式。链接也称超级链接,是指从一个网页指向一个目标的连接关系,所指向的目标可以是另一个网页,也可以是相同网页上的不同位置,还可以是图片、电子邮件地址、文件、甚至是应用程序。

在前端页面中,引用JS(使用 <script> 的 src 属性)、CSS(使用 <link> 的 href 属性)、图片(使用 <img> 的 src 属性)、调用后端服务(使用 <form> 的 action)均需要使用链接来实现。

在 Thymeleaf 中,可以使用链接表达式为页面动态计算链接,不管是静态资源的引用,还是 form 表单的请求,凡是链接都可以用链接表达式(@{...})。

链接表达式的形式结构如下:

  • 无参请求:@{/xxx}

  • 有参请求:@{/xxx(k1=v1,k2=v2)},其中:k1=v1 和 k2=v2 是链接的参数,计算出来的 URL 为 /xxx?k1=v1&k2=v2

示例

为了演示有参数请求,我们在后端新添加一个控制器。代码如下:

package com.hxstrive.thymeleaf.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;

@RequestMapping("/common")
@Controller
public class CommonController {

    @RequestMapping("/multiArg")
    public void multiArg(String name, int age, String email,
            HttpServletResponse response) {
        response.setContentType("text/plain; charset=UTF-8");
        PrintWriter writer = null;
        try {
            writer = response.getWriter();
            StringBuilder builder = new StringBuilder();
            builder.append("name=").append(name).append(", ")
                    .append("age=").append(age).append(", ")
                    .append("email=").append(email);
            writer.println(builder.toString());
        } catch (Exception e) {
            if(null != writer) {
                e.printStackTrace(writer);
            }
        }
    }

}

在 Thymeleaf 模板中,添加如下代码:

<p>
    <!-- 通过链接表达式引入一张图片 -->
    <img th:src="@{/images/image.jpeg}">
</p>

<p>
    <!-- 通过链接表达式调用一个带参数的链接 -->
    <a th:href="@{/common/multiArg(name='张三',age=20,email='zhangsan@163.com')}">带参数的链接表达式</a>
</p>

渲染结果如下:

<p>
    <img src="/images/image.jpeg">
</p>

<p>
    <a href="/common/multiArg?name=%E5%BC%A0%E4%B8%89&amp;age=20&amp;email=zhangsan@163.com">带参数的链接表达式</a>
</p>
说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号