2013-08-03 4 views
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;">&nbsp;&#124;&nbsp;&nbsp;<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;">&nbsp;&#124;&nbsp;&nbsp;<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; 
    } 

}

답변

0

에는 jsp 페이지의 검색 양식이 하나의 메소드/URL 만 제출됩니다. 당신은 모든 방법/URL에 대해 필요하지 않습니다.

+0

하지만 콘솔에 "검색에 대한 바인딩 결과가 없습니다" " – babobka

+0

코드를 붙여야합니다. – babobka

+0

제발, 내 코드 좀 봐. – babobka

관련 문제