【问题标题】:Reading value from a form using Java Spring Controller使用 Java Spring Controller 从表单中读取值
【发布时间】:2020-01-03 22:35:04
【问题描述】:

我在尝试接收 form 的值时遇到问题。我将使用此值来刷新我使用该值的同一页面,例如过滤器(按城市过滤):

            <form action="/todoslosusuarios" modelAttribute="TodosLosUsuarios">
                <table>
                    <tr>
                        <td>Ciudad</td>
                        <td><input type="text" ciudad="ciudad"></input></td>
                    </tr>
                    <tr rowspan="2">
                        <td><input type="submit"></input></td>
                    </tr>
                </table>
            </form>

问题是它不起作用:

所以,这意味着我没有正确读取该值。

这是我的控制器代码:



 @Controller
public class ExtraerTodosLosUsuariosRegistrado {

    @RequestMapping(value = "/todoslosusuarios", method = RequestMethod.GET)
    public String ExtraerTodosLosUsuariosRegistrados(Model model) throws ParseException {

        tablausuario tu = new tablausuario();
        ArrayList<usuario> user = tu.listausuarios();
        Collections.sort(user, (o1, o2) -> o2.getCreatedAt().compareTo(o1.getCreatedAt())); //tabla ordenada

        model.addAttribute("TodosLosUsuarios", user);

        return "ExtraerTodosLosUsuariosRegistrados";

    }

    @RequestMapping(value = "/todoslosusuarios", method = RequestMethod.POST)
    public String ciudad(Model model, @RequestBody("ciudad") String ciudad) {
        tablausuariofilterbycity tufc = new tablausuariofilterbycity();
        ArrayList<usuario> userbycity = tufc.listausuariosfiltradosporciudad(ciudad);

        model.addAttribute("TodosLosUsuarios", userbycity);
        return "ExtraerTodosLosUsuariosRegistrados";
    }

}


这是我的 HTML “ExtraerTodosLosUsuariosRegistrados”

 <div class="container">
            <h2>Listado de usuarios </h2> 
            <p th:text=" ${TodosLosUsuarios.size()} "></p>    


            <form action="/test" modelAttribute="TodosLosUsuarios">
                <table>
                    <tr>
                        <td>Ciudad</td>
                        <td><input type="text" ciudad="ciudad"></input></td>
                    </tr>
                    <tr rowspan="2">
                        <td><input type="submit"></input></td>
                    </tr>
                </table>
            </form>

            <table class="table table-bordered" sortable>
                <thead>
                    <tr>
                        <th>Nombre</th>
                        <th>Email</th>
                        <th>Teléfono</th>
                        <th>Día creado</th>
                        <th>Edad</th>
                        <th>Confirmado</th>
                        <th>Promocion</th>
                        <th>Direccion</th>

                    </tr>
                </thead>
                <tbody  th:each="usuariosTotales: ${TodosLosUsuarios}" >
                    <tr>
                        <td th:text=" ${usuariosTotales.getNombre()} " ></td>
                        <td th:text=" ${usuariosTotales.getEmail()} " ></td>
                        <td th:text=" ${usuariosTotales.getPhoneNunmber()} " ></td>
                        <td th:text=" ${usuariosTotales.getCreatedAt()} " ></td>
                        <td th:text=" ${usuariosTotales.getEdad()} " ></td>
                        <td th:text=" ${usuariosTotales.getConfirmationCode()} " ></td>
                        <td th:text=" ${usuariosTotales.getPromotions()} " ></td>
                        <td th:text=" ${usuariosTotales.getAddress()} " ></td>

                    </tr>

                </tbody>
            </table>
        </div>

谁能帮我看看我做错了什么?

【问题讨论】:

  • 尝试将 ciudad="ciudad" 替换为 name="ciudad"。

标签: java html spring post controller


【解决方案1】:

字符串可能在请求正文中,因为您使用的是 POST。但是您正试图将其作为来自 url 的请求参数读取。尝试将@RequestParam(value = ciudad) 更改为@RequestBody

【讨论】:

  • 我按照你的建议做了,但似乎什么也没发生
  • 嗯,奇怪。你在上面的帖子中写过@RequestBody()@RequestBody("ciudad") 吗?我的建议是仅使用 @RequestBody 而不使用其他参数。在您的实际代码中,上面的 sn -p 也是该方法中的另一个参数。如果您只是在发布请求中发送单个字符串,则名为 Model 的第一个参数将始终为空。 Spring 只能映射 Model如果它存在于请求的正文中。
【解决方案2】:

打开 Web 浏览器控制台 (F12) 并查看从客户端(浏览器)到服务器(预期为您的 /todoslosusuarios)执行的真实 HTTP 请求。然后将客户端或服务器更改为预期的交互。
将它用于客户端-服务器 HTTP 交互的所有类似情况

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 2018-02-11
    • 2019-05-07
    • 1970-01-01
    相关资源
    最近更新 更多