我是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标签有什么区别?
答案 0 :(得分:4)
'th:action'和'th:formaction'标签将创建html标签action
和formaction
。这个问题与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
标签。