如何在Spring Boot Thymeleaf中的th:href中传递参数?

时间:2018-09-25 08:55:44

标签: spring spring-boot thymeleaf

这些是我简单的Thymeleaf表HTML文件和Spring MVC控制器代码。下面的第一张是我的桌子图像。

enter image description here

当单击“编辑”或“删除”链接时,我尝试制作一些html代码以将帖子ID值传输到查看代码,但是我不知道该怎么做。这些是我的Spring MVC Controller代码和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>

我是HTML和Spring的初学者。如何通过th:href标签将post.id值放入View MVC控制器?

3 个答案:

答案 0 :(得分:3)

documentation

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

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

<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>

答案 1 :(得分:0)

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

<a th:href="@{/index(param1='value1',param2='value2')}">

Thymeleaf对上述内容进行了评估:

<a href="/index?param1=value1,m2=value2">

例如,假设我们将默认值设置为两个参数; name =“ Dracula”,年龄= 25。

<a th:href=@{/person(name=${name},age=${age})}></a>

<a href="/person?name='Dracula',age='25'"></a>

答案 2 :(得分:-1)

您可以尝试以下操作:

<a href="posts/view.html" th:href="@{/posts/view/__${post.id}__}">Edit</a><br/>
<a href="posts/view.html" th:href="@{/posts/view/__${post.id}__}">Delete</a>