Spring MVC и Thymeleaf: как получить значение объекта списка после итерации - PullRequest
0 голосов
/ 17 января 2019

Привет всем и спасибо, что прочитали мой выпуск.

Я программирую приложение, используя 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, с тем, что я хочу получить конкретный повторяющийся объект, в зависимости от кнопки, нажатой в контроллере.

1 Ответ

0 голосов
/ 17 января 2019

Согласно официальной документации Thymeleaf: значения атрибутов th: object в тегах формы должны быть выражениями переменных ($ {...}), указывающими только имя атрибута модели, без навигации по свойствам

th: each = "usuario: $ {usuarios} и th: object =" $ {usuario} ", оба одинаковы.

Здесьвы используете его как локальную ссылку. Попробуйте переименовать th: каждое имя переменной или заменить на имя объекта команды / атрибута модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...