如何使用ThymeLeaf将绑定对象的字段解析为HTML中的int?

时间:2018-10-29 19:53:41

标签: java thymeleaf

<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";
}

1 个答案:

答案 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应该自动为您进行转换。