【问题标题】:Spring MVC and Thymeleaf: How to get the value of an object of a list after an iterationSpring MVC 和 Thymeleaf:如何在迭代后获取列表对象的值
【发布时间】:2019-01-16 23:16:04
【问题描述】:

大家好,感谢您阅读我的问题。

我正在使用 Spring MVC 和 Thymeleaf 编写应用程序,但遇到以下问题。

我正在迭代一个对象列表,并在它们下面显示一个按钮,我的目标是更新数据库,从特定的迭代对象中获取一个属性的值,但检索到的属性是空的,并且它' d 不应为空。

我的控制器类:

@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 外,一切正常,我想要获取特定的迭代对象,具体取决于在控制器中单击的按钮。

【问题讨论】:

    标签: java html hibernate spring-mvc thymeleaf


    【解决方案1】:

    根据 Thymeleaf 官方文档:表单标签中 th:object 属性的值必须是可变的 表达式 (${...}) 仅指定 模型属性的名称, 没有属性导航

    th:each="usuario: ${usuarios} 和 th:object="${usuario}" 都是一样的。

    在这里,您将其用作本地参考。尝试重命名 th:each 变量名称或替换为命令对象/模型属性名称。

    【讨论】:

    • 我知道了,但我认为它不能解决我的问题,因为我想要做的是使对象成为模型属性,具体取决于单击列表的哪个按钮。我希望解释得更好。
    猜你喜欢
    • 2015-12-12
    • 1970-01-01
    • 2018-07-10
    • 2021-04-27
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多