我可能会以错误的方式解决这个问题,但我正在编写一个应用程序,该应用程序以简单页面开头,下拉选择然后根据选择进行。当我使用spring MVC时,我认为最简单的解决方案是将select值设置为对象本身,但它似乎返回Null。
所以初始主页控制器是
@Controller
@RequestMapping("/")
public class HomeController extends JFrame {
@Autowired
private FruitDAO fruitDAO;
@RequestMapping(method = RequestMethod.GET)
public String HomePage(Model model) {
List<Fruit> fruit = fruitDAO.ListAll();
model.addAttribute("fruits", fruits);
return "Home";
}
打开页面Home.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<body>
<form method="POST" commandName="fruitForm" >
<h2>Choose a fruit</h2>
<select id="fruits" name=Fruits >
<c:forEach var="fruit" items="${fruits}" >
<option value="${fruit}" >${fruit[1]} (ID: ${fruit[0]})</option>
</c:forEach>
</select>
<input type="submit" id="submit" value="View" />
</form>
</body>
</html>
&#13;
我当时只是希望将帖子返回到同一个控制器(稍后重定向)。
@RequestMapping(method = RequestMethod.POST)
public String processFruitSelection(@ModelAttribute("fruitForm") Fruit fruit) {
// for testing purpose:
System.out.println("Fruit: " + fruit.getName());
//curretly a dummy hello world page
return "TestPage";
}
Fruit显然是一个虚拟实体,但实际上该模型有4个基本属性(3个字符串和1个日期)。目前它返回null。我猜测返回的表单对象实际上并不是所选的值。
如果有人能告诉我是否有办法让所选择的值返回表格值,或者我采取了完全错误的方法,我将不胜感激!?
感谢。
答案 0 :(得分:1)
你应该在jsp中使用spring form标签而不是简单的form标签。
也使用<form:input>
和春天提供的所有内容。
<form:form modelAttribute="fruits" method="POST">
答案 1 :(得分:1)
现有代码中存在一些错误:
1.在主页控制器中,您要添加水果而不是水果(列表名称)
2.在Home.jsp中,在选项中,fruit是可变的,而不是数组
解决方案是您必须使用form:form
,form:select
和form:option
,如下所示:
此处meeting
是您的模型属性,meetings
是您的列表
<form:form action="controllerName" method="POST" modelAttribute="meeting">
<form:select path="country">
<form:option value="NONE" label="Select" />
<form:options items="${meetings}" />
</form:select>
</form:form>