java - 搜索的实现给我错误 客户端发送的请求在语法上不正确

标签 java spring hibernate spring-mvc

我在实现搜索某些实体时遇到问题。 TomCat 给我 HTTP 状态 400 -

输入状态报告

消息

描述客户端发送的请求在语法上不正确。

很抱歉,如果这是一个简单的错误。我是新手。感谢大家的帮助。

Controller 代码

@RequestMapping(value = "/deputeAppealSearchPageResult", method = RequestMethod.GET)
    public String resultOfSearchingDeputeAppeal(@ModelAttribute("appealForRequest")DeputeAppealForRequestDto deputeAppealForRequestDto, Model model){
        LOGGER.debug("Receive request to get searching Depute Appeals list");
            List<DeputeAppeal>deputeAppealList = deputeAppealService.individualSearch(deputeAppealForRequestDto);
            model.addAttribute("deputeAppealList", deputeAppealList);
            return "deputeAppealView/deputeAppealSearchPageResult";
    }

服务代码

public List<DeputeAppeal> individualSearch(DeputeAppealForRequestDto deputeAppealForRequestDto) {

        RequestForDeputeAppealSearch requestForDeputeAppealSearch = new RequestForDeputeAppealSearch();
        SimpleDateFormat format = new SimpleDateFormat("mm-dd-yyyy");
        java.sql.Date incomeDateForDeputeAppealSQLSearch;
        java.sql.Date outDateForDeputeAppealSQLSearch;

        if(deputeAppealForRequestDto.getOutDate() == "") {
            deputeAppealForRequestDto.setOutDate(null);
        } else {
            try {
                Date outDateForSearch = format.parse(deputeAppealForRequestDto.getOutDate());
                outDateForDeputeAppealSQLSearch = new java.sql.Date(outDateForSearch.getTime());
                requestForDeputeAppealSearch.setOutDate(outDateForDeputeAppealSQLSearch);
            } catch (ParseException e) {
                e.printStackTrace();
            }

        }


        if(deputeAppealForRequestDto.getIncomingDate() == "") {
            deputeAppealForRequestDto.setIncomingDate(null);
        } else {
            try {
                Date incomingDateForSearch = format.parse(deputeAppealForRequestDto.getIncomingDate());
                incomeDateForDeputeAppealSQLSearch = new java.sql.Date(incomingDateForSearch.getTime());
                requestForDeputeAppealSearch.setIncomingDate(incomeDateForDeputeAppealSQLSearch);
            } catch (ParseException e) {
                e.printStackTrace();
            }

        }
        requestForDeputeAppealSearch.setOutNumber(deputeAppealForRequestDto.getOutNumber());
        requestForDeputeAppealSearch.setIncomeNumber(deputeAppealForRequestDto.getIncomeNumber());
        requestForDeputeAppealSearch.setNameAndAddressOfApplicant(deputeAppealForRequestDto.getNameAndAddressOfApplicant());
        requestForDeputeAppealSearch.setNameOfDepute(deputeAppealForRequestDto.getNameOfDepute());
        requestForDeputeAppealSearch.setSendingOrganization(deputeAppealForRequestDto.getSendingOrganization());
        requestForDeputeAppealSearch.setShortContentOfAppeal(deputeAppealForRequestDto.getShortContentOfAppeal());
        requestForDeputeAppealSearch.setMainWorker(deputeAppealForRequestDto.getMainWorker());
        requestForDeputeAppealSearch.setTypeOfDeputeAppeal(deputeAppealForRequestDto.getTypeOfDeputeAppeal());
        return deputeAppealDao.individualSearch(requestForDeputeAppealSearch);
    }

DAO代码

public List<DeputeAppeal> individualSearch(RequestForDeputeAppealSearch deputeAppealForRequest) {
        Criteria criteria = sessionDao.getSession().createCriteria(DeputeAppeal.class);
        if(!deputeAppealForRequest.getOutNumber().equals("")) {
            criteria.add(Restrictions.eq("outNumber", deputeAppealForRequest.getOutNumber()));
        }
        if(deputeAppealForRequest.getIncomeNumber() != 0) {
            criteria.add(Restrictions.eq("incomeNumber", deputeAppealForRequest.getIncomeNumber()));
        }
        if(!deputeAppealForRequest.getNameAndAddressOfApplicant().equals("")) {
            criteria.add(Restrictions.like("nameAndAddressOfApplicant", deputeAppealForRequest.getNameAndAddressOfApplicant()));
        }
        if(!deputeAppealForRequest.getNameOfDepute().equals("")) {
            criteria.add(Restrictions.like("nameOfDepute", deputeAppealForRequest.getNameOfDepute()));
        }
        if(!deputeAppealForRequest.getSendingOrganization().equals("")) {
            criteria.add(Restrictions.eq("sendingOrganization", deputeAppealForRequest.getSendingOrganization()));
        }
        if(deputeAppealForRequest.getOutDate() != null) {
            criteria.add(Restrictions.eq("outDate", deputeAppealForRequest.getOutDate()));
        }
        if(deputeAppealForRequest.getIncomingDate() != null) {
            criteria.add(Restrictions.eq("incomingDate", deputeAppealForRequest.getIncomingDate()));
        }
        if(!deputeAppealForRequest.getShortContentOfAppeal().equals("")) {
            criteria.add(Restrictions.like("shortContentOfAppeal", deputeAppealForRequest.getShortContentOfAppeal()));
        }
        if(deputeAppealForRequest.getTypeOfDeputeAppeal() != null) {
            criteria.add(Restrictions.eq("typeOfDeputeAppeal", deputeAppealForRequest.getTypeOfDeputeAppeal()));
        }
        if(!deputeAppealForRequest.getMainWorker().equals("")) {
            criteria.add(Restrictions.eq("mainWorker", deputeAppealForRequest.getMainWorker()));
        }
        return criteria.list();
    }

JSP

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<title>Пошук запитів (звернень) народних депутатів</title>
<head>
  <meta charset="utf-8">
  <!-- Jquery -->
  <script src="../../../resources/bootstrap/jquery/jquery-2.2.2.min.js"></script>

  <!-- Latest compiled JavaScript -->
  <script src="../../../resources/bootstrap/js/bootstrap.js"></script>

  <link href="<c:url value="/resources/bootstrap/css/bootstrap.css" />" rel="stylesheet">

  <link href="<c:url value="/resources/styles/deputeAppealPagesStyle/deputeAppealSearchPage.css" />" rel="stylesheet">

</head>

<body>

<div class="container head">

  <a href="/main/Menu"><img class="header" src="../../../resources/images/police.png"></a>

</div>

<c:url var="getDeputeAppeals" value="/deputeAppeal/deputeAppealSearchPageResult"/>

<form:form method="get" action="${getDeputeAppeals}">

<div class="container">

  <div class="row main">

      <div class="col-md-4 left_block">

      <label>Номер вих.</label>
      <input type="text" id="outNumber" class="form-control" name="outNumber" path="outNumber">

      <label>Номер вх.</label>
      <input type="text" id="incomeNumber" class="form-control" name="incomeNumber" path="incomeNumber">

      <label>Дата вх.</label>
      <input type="date" id="incomingDate" class="form-control" name="incomingDate" path="incomingDate">

      <label>Дата вих.</label>
      <input type="date" id="outDate" class="form-control" name="outDate" path="outDate">

      <label>П.І.Б та адреса заявника</label>
      <input type="text" id="nameAndAddressOfApplicant" class="form-control" name="nameAndAddressOfApplicant" path="nameAndAddressOfApplicant">

      </div>

      <div class="col-md-4 right_block">

      <label>П.І.Б народного депутата</label>
      <input type="text" id="nameOfDepute" class="form-control" name="nameOfDepute" path="nameOfDepute">

      <label>Інстанція з якої надійшов документ</label>
      <input type="text" id="sendingOrganization" class="form-control" name="sendingOrganization" path="sendingOrganization">

      <label>Короткий зміст</label>
      <textarea id="shortContentOfAppeal" class="form-control" name="shortContentOfAppeal" path="shortContentOfAppeal"></textarea>

      <label>Вид</label>
      <select class="form-control" id="typeOfDeputeAppeal" name="TypeOfDeputeAppeal" path="TypeOfDeputeAppeal">
        <option disabled selected value>blank</option>
        <option value="Звернення">Звернення</option>
        <option value="Запит">Запит</option>
      </select>

      <label>Служба виконавець</label>
      <textarea class="form-control" id="mainWorker" name="mainWorker" path="mainWorker"></textarea>

    </div>

    </div>

    </div>

    <div class="container">
      <div class="row">
        <div class="col-md-offset-4 col-md-4 col-md-offset-4">
            <p id="message"></p>
      <button type="submit" class="btn btn-primary">Пошук</button>
          </div>
      </div>
    </div>
</form:form>

</body>

</html>

域名代码

public class DeputeAppealForRequestDto extends RequestDto {

    private String outNumber;

    private int incomeNumber;

    private String incomingDate;

    private String outDate;

    private String nameAndAddressOfApplicant;

    private String nameOfDepute;

    private String sendingOrganization;

    private String shortContentOfAppeal;

    private String mainWorker;

    private String typeOfDeputeAppeal;

    public DeputeAppealForRequestDto() {}

    public String getOutNumber() {
        return outNumber;
    }

    public void setOutNumber(String outNumber) {
        this.outNumber = outNumber;
    }

    public String getNameOfDepute() {
        return nameOfDepute;
    }

    public void setNameOfDepute(String nameOfDepute) {
        this.nameOfDepute = nameOfDepute;
    }

    public String getIncomingDate() {
        return incomingDate;
    }

    public void setIncomingDate(String incomingDate) {
        this.incomingDate = incomingDate;
    }

    public String getShortContentOfAppeal() {
        return shortContentOfAppeal;
    }

    public void setShortContentOfAppeal(String shortContentOfAppeal) {
        this.shortContentOfAppeal = shortContentOfAppeal;
    }

    public String getTypeOfDeputeAppeal() {
        return typeOfDeputeAppeal;
    }

    public void setTypeOfDeputeAppeal(String typeOfDeputeAppeal) {
        this.typeOfDeputeAppeal = typeOfDeputeAppeal;
    }

    public String getOutDate() {
        return outDate;
    }

    public void setOutDate(String outDate) {
        this.outDate = outDate;
    }

    public String getNameAndAddressOfApplicant() {
        return nameAndAddressOfApplicant;
    }

    public void setNameAndAddressOfApplicant(String nameAndAddressOfApplicant) {
        this.nameAndAddressOfApplicant = nameAndAddressOfApplicant;
    }

    public String getSendingOrganization() {
        return sendingOrganization;
    }

    public void setSendingOrganization(String sendingOrganization) {
        this.sendingOrganization = sendingOrganization;
    }

    public String getMainWorker() {
        return mainWorker;
    }

    public void setMainWorker(String mainWorker) {
        this.mainWorker = mainWorker;
    }

    public int getIncomeNumber() {
        return incomeNumber;
    }

    public void setIncomeNumber(int incomeNumber) {
        this.incomeNumber = incomeNumber;
    }
}

最佳答案

您正在尝试使用 get 方法发送表单,这会导致将搜索数据附加到 url:

Appends the form-data to the URL in name/value pairs: URL?name=value&name=value

http://www.w3schools.com/tags/att_form_method.asp

你能做的就是改变你的@RequestMapping并将表单方法设置为 POST,但更好的解决方案是将 Controller 方法更改为接受 Map<String, String>而不是@ModelAttribute :

@RequestMapping(value = "/deputeAppealSearchPageResult", method = RequestMethod.GET)
    public String resultOfSearchingDeputeAppeal(Map<String, String> params, Model model)

您必须将数据重写到对象 DTO,或者更改您的服务以接受 Map<String,String>

这样会需要更多的重构,但解析会按照GET方法规范进行。

关于java - 搜索的实现给我错误 客户端发送的请求在语法上不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41067197/

相关文章:

java - Spring Data JPA crudrepository save 方法有返回值吗?如果是的话它返回什么?

java - Hibernate 过滤器关联

java - Hibernate/JPA 新增功能 : java. 表主键上的 lang.NullPointerException 过滤

java - 如何将二进制文件拆分为 4 个字节的部分?

java - tess4J 应用程序的 JUnit 测试

java - SpringBootApplication 不会 Autowiring 我的服务

java - Controller 中未检测到 freemarker 形式的 Spring 绑定(bind)

java - 如何以正确的方式处理超过锁定等待超时?

java - 给定路径中的文件无法识别

java - 强制 Spring 在运行时使用特定的类代替另一个类