我的目标是遍历一个对象列表,一些要显示在屏幕上,另一些要作为对象传递到一个表单中,我可以定义该表单的某些方面,然后将要修改的对象和属性返回给控制器。
以下方法的问题是列表中的对象没有正确传递给表单,因此会出现错误,因为它试图对不存在的对象进行更改。
另一方面,如果我试图通过ModelAndView将它作为一个对象传递,它显然可以工作,但不具备我通过list传递的对象的所有特征。
控制器
@GetMapping("/")
public ModelAndView home() throws IOException {
ModelAndView mv = new ModelAndView();
mv.setViewName("home");
List<Comics> allComics = cs.getAll();
mv.addObject("comics", allComics);
return mv;
}
@PostMapping("/update")
public ModelAndView update(Comics com, @RequestParam("attr") String attr) throws IOException {
ModelAndView mv = new ModelAndView();
com.setLastRead(attr);
cs.updateAttributes(com);
mv.setViewName("home");
List<Comics> allComics = cs.getAll();
mv.addObject("comics", allComics);
return mv;
}
主页.html
<html xmlns:th="http://www.thymeleaf.org">
<tr th:each="comic : ${comics}">
<td th:text="${comic.title}"></td>
<td th:text="${comic.lastChapter}"></td>
<td>
<a th:href="${comic.lastChapterLink}" target="_blank"
role="button" class="btn btn-md btn-block btn-info"> Link
</a>
</td>
<td></td>
<td>
<form th:action="@{/update}" th:object="${comic}" method="post">
<input type="text" name="attr" id="attr"/>
<button type="submit">Sub</button>
</form>
</td>
</tr>
PS:我去掉了html页面的标题,因为它充满了不相关的CDN
如何将Spring MVC与Thymeleaf集成以实现传递对象列表可以显示在屏幕上并在html页面中用于其他目的而不会引发错误的结果?
显然,如果你知道更有效的方法来达到我正在倾听的结果;我只使用了这个方法,因为我不知道其他方法。
谢谢你。
回复@RafaeldaSilva:
我同意,但这并不能解决问题。让我解释一下:我要通过表单修改的属性已经有了它的名称,以允许您所写的内容。但是对象迭代通过:
tr th:each="comic : ${comics}">
不能作为输入直接传递,因为它是一个从列表中获取的值,并且仅单独存在于html页面中。有人可能会考虑将其作为隐藏输入传递,但在这种情况下,结果是相同的(我已经尝试过):
<form th:action="@{/update}" th:object="${comic}" method="post">
<input type="hidden" value="${comic}" name="com"/>
<input type="text" name="attr" id="attr"/>
<button type="submit">Sub</button>
</form>
@PostMapping("/update")
public ModelAndView update(@RequestParam("com") Comics com, @RequestParam("attr") String attr) throws IOException {
ModelAndView mv = new ModelAndView();
com.setLastRead(attr);
System.out.println("Comic: " + com);
cs.updateAttributes(com);
mv.setViewName("home");
List<Comics> allComics = cs.getAll();
mv.addObject("comics", allComics);
return mv;
}
错误:[org.springframework.web.bind.MissingServletRequestParameterException:方法参数类型漫画的必需请求参数“com”存在,但转换为空]
尝试删除type=“hidden”
以查看此输入
中的内容,因为我知道您是通过执行value=“${comic}”
来插入对象,这样输入就不会发送所需的值。。
更改此内容:
为此:
所以你可以看到表单发送给控制器的是什么,我相信这是对象的内存路径,而不是其中存在的数据。
在
输入
中,您必须通知对象的属性,而不是整个对象。
大家好,我对thymeleaf和我的静态html页面有一个问题。更具体地说,我有一个spring mvc web应用程序,我也在使用spring security,在我的登录页面中,我想使用thymeleaf,这样spring security可以与另一端的客户端层通信吗?我不想在我的所有html页面中包括thymeleaf,因为我将使用AngularJs 我尝试将登录名放在templates文件
我不明白,如果html模板与我在ModelAndView中获得的属性链接,如何将RESTFull服务的@Controller更改为@RestController 在胸腺叶模板中 但我想进入索引页面,在后台获取用户名 我可以使用ajax来更新标记“p”,但这样使用thymeleaf并没有什么好处,我可以使用jsp。那么,在Rest时使用thymeleaf的最佳方式是什么?它是否合理?
我用百里香模板发送电子邮件。我有一个模板,比如: 如果为空或,我不想发送电子邮件。我可以设置任何Thymeleaf属性来生成错误并且不会发送邮件吗?因为在没有值的电子邮件中发送“My name is”没有任何意义。 我从Thymeleaf上下文中获取所有值,变量可能是不同类型的,例如、等。我也尝试了以下方法,但它并没有解决我的问题,因为对象总是可用的:
我是Springboot的初学者,所以决定在购物车上工作。似乎找不到org.springframework.expression.spel.SpelEvalue ationException: EL1007E的根:在null上找不到属性或字段'name'。嵌套异常是org.thymeleaf.exceptions.TemplateProcessingException: Exception评估Sp
我有一个,它传递给了一个Thymeleaf页面。我把这张地图放在页面上,我可以访问它。 如何使用thymeleaf执行?我只需要获取基于某个键的值,然后解析并打印该值,我知道该值并具有逻辑。 我正在运行一个Broadleaf应用程序,而Thymeleaf是它的UI引擎。
每次访问无效的endpoint或在spring Boot应用程序中的de code内部发生一些托管错误时,我都会在浏览器中收到此错误消息: 这意味着我的Spring Boot正在覆盖它的白色标签错误信息,并尝试用百里香错误模板页面向我显示错误。 我在网上找到了许多关于如何使用这个方案的教程,但没有找到任何向我展示如何不使用Thymeleaf来管理我的错误响应的教程。 我想在我的REST服务器中使用
您好,我是spring新手,我正试图用thymeleaf显示一个简单的html文件,但在呈现视图时遇到了问题。它只显示字符串“index”,而不显示index中的html内容。html。有人能告诉我我做错了什么吗 调度员servle。xml文件: TestController.java: 指数html文件:在webapp/templates/index中定义。html
问题内容: 我的问题如下: 我有2个不同的对象,必须从一个表单中填写。 对于1个对象,我只需在newFoo.html中执行: 并在FooController中: 假设我有另一个对象栏,其中带有“状态”变量。我该如何传递该对象,以便可以在同一表格中提交输入? 喜欢: 到目前为止,我试图对其中带有th:object的字段进行设置,这是行不通的,我试图将两个th:object放入形式,这也不起作用。 我