我在实现搜索某些实体时遇到问题。 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/