1
Apache Tiles를 사용하여 폼에 문제가 발생했습니다. 그래서 ... 각 페이지마다 하나의 JSP가 있습니다. 그것은 거의 검색 양식이 아닙니다. 컨트롤러의 각 방법에 @ModelAttribute("search") SearchForm query, BindingResult result
을 추가해야합니다. 이것을 피하는 방법?컨트롤러 메서드의 성가신 매개 변수
JSP :
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
<%@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/core" prefix="c"%>
<c:if test="${empty newsList}">
<h2>NO RESULTS</h2>
Please, search something else</c:if>
<c:if test="${!empty newsList}">
<table class="data">
<c:forEach items="${newsList}" var="news">
<table style="width: 100%; border-collapse: collapse;">
<tbody>
<tr>
<td
style="letter-spacing: 0px; word-spacing: 0px; width: 220px; vertical-align: top;"><strong>
<h3><a href="${pageContext.request.contextPath}/news/${news.id}">${news.title}</a></h3>
</strong></td>
<td
style="vertical-align: top; letter-spacing: 0px; word-spacing: 0px;"> | <c:forEach
items="${news.tags}" var="tag">
<small><a
href="${pageContext.request.contextPath}/tags/${tag.id}">${tag.title}</a></small>
</c:forEach><br></td>
</tr>
</tbody>
</table>
</c:forEach>
</table>
</c:if>
타일 :
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
<%@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/core" prefix="c"%>
<c:if test="${empty newsList}">
<h2>NO RESULTS</h2>
Please, search something else</c:if>
<c:if test="${!empty newsList}">
<table class="data">
<c:forEach items="${newsList}" var="news">
<table style="width: 100%; border-collapse: collapse;">
<tbody>
<tr>
<td
style="letter-spacing: 0px; word-spacing: 0px; width: 220px; vertical-align: top;"><strong>
<h3><a href="${pageContext.request.contextPath}/news/${news.id}">${news.title}</a></h3>
</strong></td>
<td
style="vertical-align: top; letter-spacing: 0px; word-spacing: 0px;"> | <c:forEach
items="${news.tags}" var="tag">
<small><a
href="${pageContext.request.contextPath}/tags/${tag.id}">${tag.title}</a></small>
</c:forEach><br></td>
</tr>
</tbody>
</table>
</c:forEach>
</table>
</c:if>
컨트롤러 :
@RequestMapping(value = "/search/", method = RequestMethod.GET)
public String redirectNullSearch(
@ModelAttribute("search") SearchForm query, BindingResult result) {
return "redirect:/";
}
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String addContactProcess(@ModelAttribute("news") News news,
BindingResult result) {
newsService.addNews(news);
return "redirect:/";
}
@RequestMapping(value = "/add", method = RequestMethod.GET)
public String addNewsProcess(Map<String, Object> map,
@ModelAttribute("search") SearchForm query, BindingResult result) {
map.put("news", new News());
return "add";
}
@RequestMapping(value = "search/{name}", method = RequestMethod.GET)
public String getSearch(@PathVariable String name, Map<String, Object> map,
@ModelAttribute("search") SearchForm query, BindingResult result) {
if (name.equals(null)) {
return "redirect:/";
}
map.put("query", name);
map.put("news", new News());
map.put("newsList", newsService.searchAllWithDetail(name));
return "search";
}
검색 폼 클래스 :
package net.babobka.blog.form;
public class SearchForm {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
하지만 콘솔에 "검색에 대한 바인딩 결과가 없습니다" " – babobka
코드를 붙여야합니다. – babobka
제발, 내 코드 좀 봐. – babobka