java - 使用@pathvariable后,Spring附加所有链接而不是返回预期目的地

标签 java spring jsp spring-mvc

在 jsp 中,一旦您单击某个类别,它就会动态附加到 bookRecommendation 路径的末尾,因此您会得到/bookRecommendation/fiction 或/bookRecommendation/biography 等。

问题:这样做后,当我单击另一个链接时,它只是附加到路径中,所以 bookRecommendation/aboutMe,当我只想它带我到/aboutMe 时。在我将包含路径变量的方法添加到 Controller 之前,一切都按预期工作。

@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>

标题.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>

有什么想法吗?谢谢!

最佳答案

Controller 没有任何问题。您使用的是相对路径。您需要在服务器上使用绝对路径:

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

改成这个

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

关于java - 使用@pathvariable后,Spring附加所有链接而不是返回预期目的地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42743097/

相关文章:

java - Tomcat上传文件到哪里?

java - 对 Bitmap 中的像素值感到困惑(使用 setPixel 预乘颜色)

java - 版本升级后异常

spring - SpringMVC中Model和HttpServletRequest的用法有什么区别? HttpServletRequest可以完全替代Model吗?

java - RSQL : How to query for null column values?

java - TcpConnectionFactoryFactoryBean : using both SslContextSupport and SocketFactorySupport

java - 如何将此文本路径发送到 encrypt.actionListener

netbeans - Java 结果 : 143

java - 通过连接防止 Oracle 数据库错误

javascript - 我们可以将 jsp 变量传递给 jQuery 就绪函数吗