spring - 将 <option> 值从 JSP 表单发送到 Controller Spring MVC

标签 spring jsp spring-mvc

这是我在 JSP 文件中的表单:

    <p class="lead">Check out the books in my store...</p>

    <form:form action="${pageContext.request.contextPath}/bookListByCategory"> 
    <select path="category">
        <option value="Programming">Programming</option>
        <option value="Fiction">Fiction</option>
        <option value="Biography">Biography</option>
        <option value="Travel">Travel</option>
    </select>
    <input type="submit" name="submit" value="submit" />
    </form:form>

表单发送到方法:

@RequestMapping(value = "/bookListByCategory/{category}")
public String getBooksByCategory(@PathVariable String category, Model model) {
    List<Book> bookListByCategory = bookService.getBookListByCategory(category);
    model.addAttribute("books", bookListByCategory);
    model.addAttribute("category", category);
    return "bookList";
}

由于某种原因它不起作用,我可以在浏览器中看到以下内容:

enter image description here

当我点击“提交”时,它会显示 404:

enter image description here

我可以看到所选选项的值没有发送到处理请求所需的 Controller 。有什么想法吗?

最佳答案

现在的工作形式:

<form action="${pageContext.request.contextPath}/bookListByCategory"> 
    <select name="category" onchange="this.form.submit();">
        <option value="all">-- category --</option>
        <option value="Programming">Programming</option>
        <option value="Fiction">Fiction</option>
        <option value="Biography">Biography</option>
        <option value="Travel">Travel</option>
    </select>
</form>

还有 Controller 中的两个方法:

@RequestMapping(value = "/bookListByCategory/{category}")
public String getBooksByCategory(@PathVariable String category, Model model) {
    List<Book> bookListByCategory = bookService.getBookListByCategory(category);
    model.addAttribute("books", bookListByCategory);
    model.addAttribute("category", category);
    return "bookList";
}

@RequestMapping(value = "/bookListByCategory")
public String getBooksByCategoryForm(@ModelAttribute("category") String category, 
        Model model) {
    if (category.equalsIgnoreCase("all")) {
        return "redirect:/bookList/";
    } else {
        return "redirect:/bookListByCategory/" + category;          
    }
}

一切正常并产生所需的输出。

enter image description here

关于spring - 将 <option> 值从 JSP 表单发送到 Controller Spring MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40270515/

相关文章:

java - Spring Security HttpSecurity 配置

spring - grails.gorm.transactions.Transactional不回滚

javascript - 从 JSP 列表填充 JavaScript 数组

HTML——在页面上给 fieldSets 一些结构

java - 不支持请求方法 'POST' 和 amazon elastic beanstalk

java - Spring MVC中如何共享表单成员?

java - Spring中具有相同名称的多个字段

java - 在Spring Boot应用程序中,不执行基于注释的切入点

java - JSP 页面提交的输入路径 ID 总是被@ModelAttribute 解释为零,因此无法更新模型对象

java - 使用 spring-web.jar 获取 java.lang.ClassNotFoundException : org. springframework.web.filter.DelegatingFilterProxy