簡體   English   中英

控制器無法使用JAVA。 春季MVC

[英]Controller doesn't work JAVA. Spring MVC

我將<form>發送到控制器時遇到問題。 當我按“提交”按鈕時,顯示400錯誤。 當我嘗試以POST方法將smth輸出到控制台時,它不會顯示它。 為什么控制器沒有收到我的表格? 謝謝! 400錯誤

這是我的JSP頁面

    <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://www.springframework.org/security/tags"
    prefix="sec"%>
<%@page language="java" session="true"%>
<%
    request.setCharacterEncoding("UTF-8");
    response.setCharacterEncoding("UTF-8");
%>
<!DOCTYPE html>
<fmt:requestEncoding value="utf-8" />
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Поиск оппонента | Haine and Vold</title>
<link rel="shortcut icon" href="<c:url value="/resources/faviicon/iconHV.ico"/>" type="image/x-icon">
<link href="<c:url value="/resources/bootstrap/bootstrap.css"/>"
    rel="stylesheet" type="text/css">
<link href="<c:url value="/resources/CSS/styles.css"/>" rel="stylesheet"
    type="text/css">

</head>
<body>
<div class="container">
        <img class="img-responsive logo" src="/app/resources/logo.jpg">
    </div>
    <h5 class="text-center noparamserror">${noparams}</h5>
    <c:url var="getSearch" value="/user/search" />
    <br>
    <div class="container text-center">
        <form:form class="form-inline centerBlock" modelAttribute="users"
            method="POST" action="/app/user/search" accept-charset="utf-8">

            <div class="form-group">
                <label class="control-label" for="weight"><spring:message
                        code="label.searchparamweight" /></label>
                <form:select multiple="" class="form-control input-sm" path="weight"
                    name="weight">
                    <form:option value=""></form:option>
                    <form:option value="40"></form:option>
                    <form:option value="50"></form:option>
                    <form:option value="60"></form:option>
                    <form:option value="70"></form:option>
                    <form:option value="80"></form:option>
                    <form:option value="90"></form:option>
                    <form:option value="100"></form:option>
                    <form:option value="110"></form:option>
                    <form:option value="120"></form:option>
                </form:select>
            </div>

            <div class="form-group">
                <label class="control-label" for="gender"><spring:message
                        code="label.gender" /></label>
                <form:select multiple="" class="form-control input-sm" name="gender"
                    path="gender">
                    <form:option value=""></form:option>
                    <form:option value="Мужской"></form:option>
                    <form:option value="Женский"></form:option>
                </form:select>
            </div>
            <div class="form-group">

                <label class="control-label" for="place"><spring:message
                        code="label.place" /></label>

                <form:select class="form-control input-small" name="place"
                    path="place">
                    <form:option value=""></form:option>
                    <form:option value="Дзержинский"></form:option>
                    <form:option value="Киевский"></form:option>
                    <form:option value="Комминтерновский"></form:option>
                    <form:option value="Лененский"></form:option>
                    <form:option value="Московский"></form:option>
                    <form:option value="Октябрский"></form:option>
                    <form:option value="Орджоникидзевский"></form:option>
                    <form:option value="Фрунзенский"></form:option>
                    <form:option value="Холодная гора"></form:option>
                    <form:option value="Червонозаводской"></form:option>
                </form:select>
            </div>

            <div class="form-group">

                <label class="control-label" for="age"><spring:message
                        code="label.searchparamage" /></label>

                <form:select multiple="" class="form-control input-small" name="age"
                    path="age">
                    <form:option value=""></form:option>
                    <form:option value="19"></form:option>
                    <form:option value="20"></form:option>
                    <form:option value="21"></form:option>
                    <form:option value="22"></form:option>
                    <form:option value="23"></form:option>
                    <form:option value="24"></form:option>
                    <form:option value="25"></form:option>
                    <form:option value="26"></form:option>
                    <form:option value="27"></form:option>
                    <form:option value="28"></form:option>
                    <form:option value="29"></form:option>
                    <form:option value="30"></form:option>
                    <form:option value="31"></form:option>
                    <form:option value="32"></form:option>
                    <form:option value="33"></form:option>
                    <form:option value="34"></form:option>
                    <form:option value="35"></form:option>
                    <form:option value="36"></form:option>
                    <form:option value="37"></form:option>
                    <form:option value="38"></form:option>
                    <form:option value="39"></form:option>
                    <form:option value="40"></form:option>
                    <form:option value="41"></form:option>
                    <form:option value="42"></form:option>
                    <form:option value="43"></form:option>
                    <form:option value="44"></form:option>
                    <form:option value="45"></form:option>
                </form:select>
            </div>


            <button class="btn btn-success" type="submit">
                <spring:message code="label.search" />
            </button>


        </form:form>

    </div>
    <br>
    <div class="scrollTableSearch">
        <c:if test="${!empty listUsersSort}">


            <table
                class="table table-striped table-bordered table-condensed table-hover">

                <tr>
                    <th><spring:message code="label.name" /></th>
                    <th><spring:message code="label.surname" /></th>
                    <th><spring:message code="label.gender" /></th>
                    <th><spring:message code="label.weight" /></th>
                    <th><spring:message code="label.height" /></th>
                    <th><spring:message code="label.sport" /></th>
                    <th><spring:message code="label.place" /></th>
                </tr>
                <c:forEach items="${listUsersSort}" var="users">
                    <tr>

                        <td><a href="<c:url value='/user/search/${users.username}'/>"
                            target="_blank"> ${users.name}</a></td>
                        <td>${users.surname}</td>
                        <td>${users.gender}</td>
                        <td>${users.weight}</td>
                        <td>${users.height}</td>
                        <td>${users.sport}</td>
                        <td>${users.place}</td>
                    </tr>
                </c:forEach>
            </table>

        </c:if>
    </div>
</body>
<script src="<c:url value="/resources/Jquery/jquery-2.1.4.min.js"/>"
    type="text/javascript"></script>
<script src="<c:url value="/resources/bootstrap/bootstrap.js"/>"
    type="text/javascript"></script>

</html>

這是我的控制器方法。

    @RequestMapping(value = "/user/search", method = RequestMethod.POST,produces = "text/plain;charset=UTF-8")
    public String listUsersSort(
            @RequestParam(value="weight") int weight,
            @RequestParam(value="gender") String gender,
            @RequestParam(value="place") String place,
            @RequestParam(value="age") int age,
            Model model, Principal principal)
    {

        System.out.println("int");
        if(weight<40 && gender.equals("") && place.equals("") && age<19)
        {
            model.addAttribute("users", new Users());
model.addAttribute("noparams", "Задайте параметры поиска");
return "searchingUser";
        }

        else{
    model.addAttribute("users", new Users());
        model.addAttribute("listUsersSort", usersService.listUsersSort(weight, gender, place, age, principal.getName()));
        model.addAttribute("allUserMess", this.dialogService.allNewMessForUser(principal.getName()));
        model.addAttribute("countOfFeedbacks", this.feedbackService.checkUnreadFedbacks().size());
        model.addAttribute("countOfNewUsers", this.usersService.countOfNewUsers());
        return "searchingUser";
        }}

之所以會出現錯誤,是因為您的代碼介於使用表單支持bean或綁定請求中的參數之間。 您應該從表單中刪除modelAttributepath屬性。

或從請求中刪除帶有@RequestParam注釋的參數,並創建一個具有weightageplacegender屬性的表單支持對象,然后將該對象添加到以@ModelAttribute("users")注釋的控制器方法簽名中

在您的JSP頁面中,實際上在向控制器發出請求時缺少上下文根。

<form:form class="form-inline centerBlock" modelAttribute="users"
            method="POST" action="/app/user/search" accept-charset="utf-8">

在這種情況下,請求網址將為:

http:// yourHost:portNo / app / user / search

因此,要解決此問題,您可以在操作中包含上下文根:

<form:form class="form-inline centerBlock" modelAttribute="users"
                method="POST" action="/your-context-root/app/user/search" accept-charset="utf-8">

或者以這種方式編寫:

<spring:url value="/app/user/search" var="formUrl"/>
<form:form class="form-inline centerBlock" modelAttribute="users"
                    method="POST" action="${formUrl}" accept-charset="utf-8">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM