工作与行动的区别:Thymeleaf的形成

时间:2018-03-11 18:33:38

标签: spring spring-boot thymeleaf

我是Thymeleaf的新手。我有一个Spring-Boot应用程序,它在视图页面中使用了Thymeleaf组件。

  <form action="#" th:action="@{/saveStudent}" th:object="${user}" method="post">
    <table>
      <tr> 
        <td>Enter Your name</td>
        <td><input type="text"  th:field="*{userName}"/></td>
        <td><input type="submit" value="Submit"/></td>
      </tr>
   </table>
 </form>

以上代码对我来说很好

现在,在使用eclipse代码辅助时,我遇到了几个百里香的标签/属性,即th:form,th:formaction

将上述代码更改为以下格式后:

<th:form  th:formaction="@{/saveStudent}" th:object="${user}" method="post">
  <table>
    <tr> 
      <td>Enter Your name</td>
      <td><input type="text"  th:field="*{userName}"/></td>
      <td><input type="submit" value="Submit"/></td>
    </tr>
  </table>
</th:form>

它已停止工作。我的网页未提交给服务器。 所以,我想了解以下事项:

th:form标签有什么用? th:action和th:formaction标签有什么区别?

1 个答案:

答案 0 :(得分:4)

'th:action'和'th:formaction'标签将创建html标签actionformaction。这个问题与Thymeleaf没有关系,而是html标签本身。

action标记可以放在表单上,​​以指定要将表单传递给的URL。在您的第一个示例中,提交表单会向/saveStudent发送POST请求。

第二个示例是无效的HTML,这就是表单无法提交的原因。 formaction可用于覆盖表单中表单的action属性。它可以在input标签上使用:

<form th:action="@{/saveStudent}" th:object="${user}" method="post">
  <table>
    <tr> 
      <td>Enter Your name</td>
      <td><input type="text"  th:field="*{userName}"/></td>
      <td><input type="submit" value="Submit"/></td>
      <td><input th:formaction="@{/saveSomewhereElse}" type="submit" value="Submit to other url"/></td>
    </tr>
  </table>
</form>

在此示例中,默认action将提交至/saveStudent,但如果有人点击第二个提交按钮,则表单将提交至/saveSomewhereElse

一般来说,99%的情况下你可能只需要action标签。