Thymeleaf href到控制器:无法解析为表达式

时间:2018-07-29 20:37:28

标签: spring-mvc spring-boot thymeleaf

我在循环内使用Thymleaf href。

class Bar {
    private $html = ''; // set a default empty string

    public function add($text)
    {
      $this->html.=$text."\n";
    }

    //..rest of your class

}

我的控制器定义是

<th:block th:each="study : ${studyList}">
                <tr>
                    <td th:text="${study.patient.name}"></td>
                    <td th:text="${study.status}"></td>
                    <td th:text="${study.description}"></td>
                    <td><a th:href="@{/updateStudy/{studyId} (studyId=${study.id})}>"</a>Update</td>
                </tr>
</th:block>

由于解析异常,页面未呈现:

  

无法解析为表达式:“ @ {/ updateStudy / {studyId}   (studyId = $ {study.id})}>“

也在html页面中,它正在编译:未定义的属性名称((studyId)。

我在这里想念的是什么?请帮助。

更新

显然该表达式应该是

@RequestMapping(value = "/updateStudy/{studyId}")
    public void updateStudy(@RequestParam("studyId") long studyId
                                             ) {
....
}

现在至少解决了解析错误。但我得到了:

发生意外错误(类型=错误请求,状态= 400)。 所需的长参数'studyId'不存在

希望它与href表达式无关。

已解决

为完成答案,我将控制器定义更改为

<td><a th:href="@{/updateStudy/{studyId} (studyId=${study.id})}" >Update</a></td>

现在一切正常。

1 个答案:

答案 0 :(得分:0)

尝试一下:

<td><a th:href="@{/updateStudy/${study.id}}" >Update</a></td>

这是控制器中的另一个问题:

@RequestParam will be `@PathVariable `

更改为它:

@RequestMapping(value = "/updateStudy/{studyId}")
public void updateStudy(@PathVariable ("studyId") long studyId
                                         ) {

... }