<form th:action="@{/gustos}" method="post" th:object="${gusto}">
<input type="hidden" th:field="*{id}"/>
<div class="row">
<div class="col s12">
<h2> Borrar Gusto</h2>
</div>
</div>
</form>
我正在使用绑定的对象 th:object =“ $ {gusto}” 来访问HTML中的每个对象属性。
捕获ID的隐藏输入正在将其解析为String ...我需要再次对其进行解析,以便可以从控制器访问变量或执行以下操作:
<div class="row delete" th:id="*{gusto.id != null}">
<div class="col s12 l8">
<form th:action="@{|/gustos/${gusto.id}/delete|}" method="post">
<button type="submit" class="button">Borrar</button>
</form>
</div>
</div>
但这并不能让我忽略该字段是一个字符串,并且期望一个整数。
是否可以使用ThymeLeaf在HTML中解析该字段(“ id”)?
这是我的控制器处理视图的方法:
@RequestMapping(value = "/gustos/{id}/delete", method = RequestMethod.POST)
public String deleteGustoId(@PathVariable int id, Model model){
Gusto gusto = gustoService.findGustoById(id);
model.addAttribute("gusto", gusto);
gustoService.delete(gusto);
return "deleteGusto";
}
答案 0 :(得分:0)
我认为问题出在您的th:action
上。您使用的是我未曾见过或未使用过的语法,所以我不确定它是否可以工作。我还没有使用其他语法方式,这种方式一直有效。尝试使用以下代码更改代码。
<form th:action="@{'/gustos/'+ ${gusto.id} +'/delete'}" method="post">
<button type="submit" class="button">Borrar</button>
</form>
更新
因为,我们得到的是String
,所以我们可以在Controller中进行简单的强制转换。如果我们确定我们要接收的参数是一个int。
@RequestMapping(value = "/gustos/{id}/delete", method = RequestMethod.POST)
public String deleteGustoId(@PathVariable String id, Model model){
int numId = Integer.parseInt(id);
Gusto gusto = gustoService.findGustoById(numId);
model.addAttribute("gusto", gusto);
gustoService.delete(gusto);
return "deleteGusto";
}
奇怪的是,Spring应该自动为您进行转换。