Spring mvc-来自数据库的下拉框选项
Posted
技术标签:
【中文标题】Spring mvc-来自数据库的下拉框选项【英文标题】:Spring mvc- dropdown box options from database 【发布时间】:2016-11-09 09:29:23 【问题描述】:这是我为使用 spring mvc 创建下拉框而实现的。
这是有效的。但我需要在数据库记录中获取所有属于motherID="M-1"
的孩子。这只给了我第一个属于 M-1 的孩子。
我必须修复哪里?我是spring mvc的初学者。
my_children.jsp
<form method="post" >
<div class="div_box">
<select id="child_name" name="Child Name" >
<option value="top">Select your child</option>
<option value="">$firstName $lastName</option>
</select>
<br>
<div align ="justify">
<button type="button" class="btn btn-success active">View Details</button>
</div>
</div>
</form>
控制器
@RequestMapping(value="/my_children", method = RequestMethod.GET)
public void viewMyChild(ModelMap modelMap)
ChildNameAccess childNameDAO = new ChildNameAccess();
try
Child child = childNameDAO.getChildDataByMotherId("M-1");
modelMap.addAttribute("firstName",child.getFirstName());
modelMap.addAttribute("lastName",child.getLastName());
catch(SQLException e)
e.printStackTrace();
数据访问类
package com.emidwife.web.models.dataAccess;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.emidwife.web.models.entities.Child;
import com.emidwife.web.models.utilities.Database;
public class ChildNameAccess
private Database connection = new Database();
Child child = new Child();
public Child getChildDataByMotherId(String motherID) throws SQLException
connection.openConnection();
try
ResultSet resultSet = connection.getData("SELECT * FROM childdetails WHERE MotherID=\'" + motherID + "\'");
resultSet.next();
//child.setChildId("1");
child.setMotherId(resultSet.getString("MotherID"));
child.setFirstName(resultSet.getString("FirstName"));
child.setLastName(resultSet.getString("LastName"));
//child.setDateOfBirth(resultSet.getDate("DOB"));
catch (SQLException e)
e.printStackTrace();
finally
connection.closeConnection();
return child;
【问题讨论】:
【参考方案1】:主要问题不在于spring mvc。您必须从数据库中执行正确的选择语句。如果您想通过“M-1”获得所有孩子,您可以在 dataAccess 类中进行以下更改。
package com.emidwife.web.models.dataAccess;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.ArrayList;
import com.emidwife.web.models.entities.Child;
import com.emidwife.web.models.utilities.Database;
public class ChildNameAccess
private Database connection = new Database();
public List<Child> getChildDataByMotherId(String motherID) throws SQLException
connection.openConnection();
List<Child> children = new ArrayList<Child>();
try
ResultSet resultSet = connection.getData("SELECT * FROM childdetails WHERE MotherID=\'" + motherID + "\'");
while(resultSet.next())
Child child = new Child();
child.setMotherId(resultSet.getString("MotherID"));
child.setFirstName(resultSet.getString("FirstName"));
child.setLastName(resultSet.getString("LastName"));
children.add(child);
catch (SQLException e)
e.printStackTrace();
finally
connection.closeConnection();
return children;
你还必须像下面这样改变你的控制器。
@RequestMapping(value="/my_children", method = RequestMethod.GET)
public void viewMyChild(ModelMap modelMap)
ChildNameAccess childNameDAO = new ChildNameAccess();
try
List<Child> children = childNameDAO.getChildDataByMotherId("M-1");
modelMap.addAttribute("children ",children);
catch(SQLException e)
e.printStackTrace();
还有jsp:
<form method="post" >
<div class="div_box">
<select id="child_name" name="Child Name" >
<option value="top">Select your child</option>
<c:forEach items="$children" var="child">
<option value="">$child.firstName $child.lastName</option>
</c:forEach>
</select>
<br>
<div align ="justify">
<button type="button" class="btn btn-success active">View Details</button>
</div>
</div>
</form>
【讨论】:
在此行的控制器中List<Child> children = childNameDAO.getChildDataByMotherId("M-1");
它给出错误“列表类型不是通用的。它不能用参数 getChildDataByMotherId
方法了吗?
我做了你建议的所有改变。
请检查您导入了哪个 List 类。它必须是 java.util.List
List<Child>
改为java.util.List<Child>
以上是关于Spring mvc-来自数据库的下拉框选项的主要内容,如果未能解决你的问题,请参考以下文章
下拉框 - 从 Spring MVC 模型/上下文到使用 freemarker 形成
将下拉菜单中的相关信息显示到文本框中(来自 SQL 数据库,使用 PHP、AJAX 和 HTML)