提问者:小点点

如何在Spring引导Thymeleaf中传输th: href中的参数?


这些是我简单的Thymeleaf表超文本标记语言文件和SpringMVC控制器代码。下面是我的表图像。

我尝试制作一些html代码来在单击“编辑”或“删除”链接时将帖子id值传输到查看代码,但我不知道该怎么做。这些是我的SpringMVCController代码和view. html代码。

@Controller
public class PostController {

    @Autowired
    private PostService postService;

    @RequestMapping("/posts/view/{id}")
    public String view(@PathVariable("id") Long id, Model model) {
        Post post = postService.findById(id);
        model.addAttribute("post", post);

        return "posts/view";
    }

还有,

<table id="blogTable" border="1" width ="1000" height="400" align = "center">
        <thead>
            <tr>
                <th>Post ID</th>
                <th>Post Title</th>
                <th>Post Content</th>
                <th>Date</th>
                <th>Author</th>
                <th>Action</th>
            </tr>
        </thead>
        <tbody>
        <tr th:each="post : ${posts}">
            <td th:text="${post.id}">Post ID</td>    
            <td th:text="${post.title}">Post Title</td>
            <td th:text="${post.body}">Post Content</td>
            <td th:text="${post.date}">Date</td>
            <!--  <td th:text="${post.auther.userName()}">Author</td> -->
            <td>
                <a href="posts/view.html" th:href="@{posts/view/post.id}">Edit</a><br/>  ==> How to transfer the post.id parameter to th:href?
                <a href="posts/view.html" th:href="@{posts/view/post.id}">Delete</a>  ==> How to transfer the post.id parameter to th:href?
            </td>
        </tr>
        </tbody>
     </table>

我是超文本标记语言和Spring的初学者。如何通过th: href标记将post.id值放入视图mvc控制器?


共3个答案

匿名用户

使用th: href,如留档中所述

  • th: href是一个属性修饰符属性:一旦处理,它将计算要使用的链接URL,并将标签的href属性设置为此URL。
  • 我们可以对URL参数使用表达式(如orderId=${o.id}所示)。所需的URL编码操作也将自动执行。
  • 如果需要多个参数,这些参数将用逗号分隔,例如@{/order/process(exexId=${exexId}, exexType='FAST')}
  • 在URL路径中也允许使用可变模板,例如@{/order/{orderId}/详细信息(orderId=${orderId})}

例如(注意th: href和从变量post接收值的参数postId):

<td>
     <a href="posts/view.html" th:href="@{posts/view/{postId}(postId=${post.id})}">Edit</a><br/>  ==> How to transfer the post.id parameter to th:href?
</td>

匿名用户

您可以在括号中添加参数:

Thymeleaf将上述评估为:

例如,假设我们将默认值设置为两个参数;name="Dracula"和age=25。

匿名用户

我用这种格式和工作正常。

<a th:href="@{${urlBase} + '/#!/pedido' + ${other.value}" target="_blank">Link</a>