2017-03-12 1 views
0

jspでは、カテゴリをクリックするとbookRecommendationパスの末尾に動的に追加されるので、/ book推奨//bookRecommendation/biographyなど@pathvariableを使用した後、Springは予想される宛先に戻る代わりにすべてのリンクを追加しています

問題:私が別のリンクをクリックすると、それはちょうど私が/ aboutMeに連れて行きたいときに、bookRecommendation/aboutMeので、パスに追加されます。パス変数を含むメソッドをコントローラに追加する前に、すべてが期待通りに機能していました。

@Controller 
public class SiteController { 

@RequestMapping(path="/bookRecommendations/{category}", method=RequestMethod.GET) 
public String displayCategoryPage(@PathVariable String category, ModelMap model) { 
    List<Book> bookList = new ArrayList<>(); 
    bookList = bookDAO.getBooksByCategory(category); 
    model.put("category", category); 
    model.put("books", bookList); 
    return "bookCategoryTemplate"; 
} 

@RequestMapping("/aboutMe") 
public String displayAboutMe() { 
    return "aboutMe"; 
} 
} 

bookRecommendations.jsp:

<div class="row"> 
     <div class="col-md-12"> 
      <div class="dropdown"> 
       <button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">Go To... 
        <span class="caret"></span> 
       </button> 
       <ul class="dropdown-menu"> 
        <c:forEach items="${categories}" var="category"> 
         <li><a href="bookRecommendations/${category.name}">${category.name}</a></li> 
        </c:forEach> 
       </ul> 
      </div> 
     </div> 
    </div> 

bookCategoryTemplate.jsp:

<div class="book-category-template"> 
    <h1 class="book-category-header">${category}</h1> 
    <c:forEach items="${books}" var="book"> 
     <h3>${book.title}</h3> 
    </c:forEach> 
</div> 

header.jsp

<header class="navbar navbar-default"> 
    <div class="container"> 
     <div class="collapse navbar-collapse" id="myNavbar"> 
      <ul class="nav navbar-nav"> 
       <li><a href="bookRecommendations">Book Recommendations</a></li> 
       <li><a href="aboutMe">About Me</a></li> 
       <li><a href="login">Login</a> 
      </ul> 
     </div> 
    </div> 
</header> 

viewResolver.xml、それは便利です場合:

<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> 
    <property name="prefix" value="/WEB-INF/jsp/"/> 
    <property name="suffix" value=".jsp"/> 
</bean> 

ありがとう!

+0

への変更、これを使用すると、JSPビューに – jmw5598

答えて

1

を試すことができます。あなたが使用しているpath.youがabsoluteパスを使用する必要があるrelativeサーバー上:

<a href="bookRecommendations/${category.name}">${category.name}</a> 

この

<a href="/bookRecommendations/${category.name}">${category.name}</a> 
+0

これは機能しました。ありがとう! –

1

これは、コード内の最後のパスが/ bookRecommendations/{category}であるために発生します。したがって、/ aboutmeをもう一度押すと、URLはあなたのケース/ {カテゴリ}の最後のURLを削除して追加されます。 "/ bookRecommendations/aboutme。 したがって、あなたのソリューションはリンクのpagecontextを追加するだけです:

<a href="${pageContext.request.contextPath}/aboutme">Go to about me </a> 

ハッピー学習!!!

+0

を追加することができますこれは、働いていました!ありがとう! –

1

あなたはcontrollerと間違って何もありません。この

 @RequestMapping(path="/aboutMe") 
     public String displayAboutMe() { 
      return "aboutMe"; 
     } 
関連する問題