这是我在 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";
}
由于某种原因它不起作用,我可以在浏览器中看到以下内容:
当我点击“提交”时,它会显示 404:
我可以看到所选选项的值没有发送到处理请求所需的 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;
}
}
一切正常并产生所需的输出。
关于spring - 将 <option> 值从 JSP 表单发送到 Controller Spring MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40270515/