我在循环内使用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>
现在一切正常。
答案 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
) {
... }