【发布时间】:2016-04-23 18:28:42
【问题描述】:
尝试在我的数据库中搜索一些数据时遇到了一些问题。 我有输入标签,我在其中写了一些文本,然后它从 JSP 到达控制器、服务,并且在 dao 中我有一个查询,当这个字符串是英文时,我将这个字符串放入查询中 - 一切正常,但是当我写乌克兰搜索中的字符串不起作用。有人可以帮忙吗?
JSP 页面
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="form"
uri="http://www.springframework.org/tags/form" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Головна сторінка</title>
<!-- Bootstrap core CSS -->
<link href="<c:url
value="../../resources/bootstrap/css/bootstrap.min.css"/>"
rel="stylesheet"/>
</head>
<body>
<c:url var="addUrl" value="/main/mainFrame/new"/>
<c:url var="searchResult" value="/main/resultOfSearching"/>
<a href="${addUrl}"><button type="button" class="btn btn-primary btn-
lg btn-block" style="margin-left:auto;
margin-right:auto;
width:250px;
margin-top:50px;">Додати звернення</button></a>
<form:form method="GET" action="${searchResult}"
modelAttribute="ListOfAppeals">
<div class="col-lg-6" style="width:800px;
margin-left:270px;
margin-top:200px;">
<div class="input-group">
<input type="text" formenctype="text/plain" name="searchChar"
class="form-control" placeholder="Введіть ідентифікатор для пошуку">
<span class="input-group-btn">
<button class="btn btn-primary" type="submit">Пошук</button></a>
</span>
</div>
</div>
</form:form>
</body>
</html>
searchingResult JSP 页面
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!-- Bootstrap core CSS -->
<link href="<c:url value="styles/searchingResultPage.css" />"
rel="stylesheet">
<link href="<c:url
value="../../resources/bootstrap/css/bootstrap.min.css" />"
rel="stylesheet">
<title>Результати пошуку</title>
</head>
<body>
<h1 style="text-align: center">Список звернень (запитів)</h1>
<table class="table table-bordered" style="width: 1200px;margin-right:
auto;margin-left: auto">
<thead>
<tr>
<th style="text-align:center">#</th>
<th style="text-align:center">Номер звернення (запиту)</th>
<th style="text-align:center">Вхідний номер</th>
<th style="text-align:center">П.І.Б. народного депутата</th>
<th style="text-align:center">Резолюція керівника</th>
<th style="text-align:center">Тип документу</th>
<th class="example" style="text-align:center">Дії з
документом</th>
</tr>
</thead>
<tbody>
<c:forEach items="${ListOfAppeals}" var="Appeals">
<tr>
<td style="text-align:center"><c:out value="${Appeals.id}"/>
</td>
<td style="text-align:center"><c:out
value="${Appeals.number}"/></td>
<td style="text-align:center"><c:out
value="${Appeals.incomingDate}"/></td>
<td style="text-align:center"><c:out
value="${Appeals.nameOfDepute}"/></td>
<td style="text-align:center"><c:out
value="${Appeals.resolutionOfChief}"/></td>
<td style="text-align:center"><c:out
value="${Appeals.typeOfAppeal}"/></td>
<td style="text-align:center"><button type="button" class="btn
btn-danger btn-sm">видалити</button>
<button type="button" class="btn btn-warning btn-sm"
style="margin-left: 5px;">редагувати</button></td>
</tr>
</c:forEach>
</tbody>
</table>
</body>
</html>
控制器方法
@RequestMapping(value = "/resultOfSearching", method =
RequestMethod.GET)
public String getSearchResult(Model model,
@ModelAttribute("searchChar")String searchResult) {
List<DeputesAppeal> deputesAppeals =
deputesAppealService.abstractSearch(searchResult);
model.addAttribute("ListOfAppeals", deputesAppeals);
return "searchingResultPage";
}
服务方式
public List<DeputesAppeal> abstractSearch(String searchingChar) {
return deputesAppealDao.abstractSearch(searchingChar);
}
和道层
public List<DeputesAppeal> abstractSearch(String searchingChar) {
Query query = sessionFactory.getCurrentSession().createQuery("from
DeputesAppeal where concat(NumberOfAppeal, DateOfIncomingAppeal,
NameOfDepute, ResolutionOfChief, TypeOfAppeal) like '%" +
searchingChar + "%'");
return query.list();
}
当 sql 记录时
from DEPUTES_APPEAL deputesapp0_ where concat(NumberOfAppeal,
DateOfIncomingAppeal, deputesapp0_.NameOfDepute,
deputesapp0_.ResolutionOfChief, TypeOfAppeal) like '%[B@7c815681%'
【问题讨论】:
-
你有 UTF-8 编码吗?
-
在哪里?我在 ubuntu 上工作
-
由于编码不正确,我遇到了俄语问题 - 我在 MySQL 中设置了 UTF 编码(您可以阅读本手册 gahcep.github.io/blog/2013/01/05/mysql-utf8),在连接数据库期间(类似于 jdbc:mysql:/ /127.0.0.1:3306/database_name?useUnicode=true&characterEncoding=UTF8&characterSetResults=UTF-8) 并且还在 WebInitializer 中添加了应用程序过滤器(您可以在此处查看示例github.com/lenach87/Ochumailoc/blob/master/src/main/java/mailoc/…)。希望对您有所帮助
-
这个词与数据库没有任何绑定
-
formenctype="text/plain"可能是罪魁祸首。此外,您不应该使用字符串连接来构建查询