大家好,谢谢你们阅读我的文章。
我正在使用Spring和Thymeleaf编写应用程序,我有以下问题。
我正在迭代一个对象列表,并在它们下面显示一个按钮,我的目标是更新数据库,从一个特定的迭代对象获取一个属性值,但是检索到的属性是空的,它不应该是空的。
我的控制器类:
@Controller
@RequestMapping("/mostrar_usuarios")
public class MostrarUsuariosController {
private final UsuarioService usuarioService;
@Autowired
public MostrarUsuariosController(UsuarioService usuarioService) {
this.usuarioService = usuarioService;
}
@RequestMapping(method = RequestMethod.GET)
public String mostrarVista(ModelMap model, HttpSession session) {
UsuarioVO u = (UsuarioVO) session.getAttribute("usuarioActivo");
if (u != null) {
ArrayList<UsuarioVO> listaUsuarios = (ArrayList<UsuarioVO>) this.usuarioService.retrieveAll();
model.addAttribute("usuarios", listaUsuarios);
return "mostrar_usuarios";
} else {
return "redirect:/paginaprincipal";
}
}
@RequestMapping(method = RequestMethod.POST)
public String registrarse(@ModelAttribute("usuario") UsuarioVO usuario, ModelMap model, HttpSession session) {
UsuarioVO u = (UsuarioVO) session.getAttribute("usuarioActivo");
if (u != null) {
u.getSeguidos().add(usuario); // usuario comes empty
this.usuarioService.update(u);
return "mostrar_usuarios";
} else {
return "redirect:/paginaprincipal";
}
}
}以下是我的html + thymeleaf代码:
<div class="media-container-row" th:each="usuario: ${usuarios}">
<div class="title col-12 col-md-8">
<br></br>
<hr />
<br></br>
<h5 class="align-center pb-3 mbr-fonts-style display-2"
th:text="${usuario.nombre + ' @' + usuario.arroba}"
id="tamanioTexto"></h5>
<form class="align-center pb-3 mbr-fonts-style display-2" action="#" method="POST" th:object="${usuario}" id="tamanioPie">
<button id="boton" type="submit">Seguir</button>
</form>
<br></br>
<hr />
<br></br>
</div>
</div>除了th:object="${usuario}" #style it as code之外,所有操作都很好,我希望得到特定的迭代对象,这取决于在控制器中单击的按钮。
发布于 2019-01-16 23:27:32
根据Thymeleaf官方文档: form标记中的th:object属性的值必须是变量表达式(${.}),该表达式仅指定模型属性的名称,没有属性导航
th:each="usuario:${usuario}和th:object="${usuario}",两者是相同的。
在这里,您使用它作为本地引用。尝试重命名th:每个var名称或用命令对象/模型属性名称替换。
https://stackoverflow.com/questions/54226812
复制相似问题