我只是在春天的mvc开始。我的任务是我使用spring将数据库中的值列表到jsp页面的下拉列表中。 当我这样做时,我得到的是对象而不是值。我使用Controller,service,DAO和命令类。这是我的代码。
服务类:
public class EventService implements RowMapper<EventCommand> {
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
@Autowired
@Qualifier("eventManagementDAO")
public IEventManagementDAO eventManagementDAO;
@Override
public EventCommand mapRow(ResultSet rs, int rowNum) throws SQLException {
EventCommand eventcommand=new EventCommand();
eventcommand.setemployee(rs.getString("firstname"));
String test2=eventcommand.getemployee();
return eventcommand;
} }
这是DAO类
public class EventManagementDAO implements IEventManagementDAO{
public List<EventCommand> showEmployee(){
EventList eventlist=new EventList();
DataSource dataSource = DataFactory.getDataSource();
JdbcTemplate template = new JdbcTemplate(dataSource);
String sql = new String("SELECT empid,firstname from empde ") ;
List<EventCommand> employee = (List<EventCommand>) template.query(sql, new EventService());
return employee;
}
}
这是我的JSP页面
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Assigning Employee for the Event</title>
</head>
<body>
<form:form name="eventemployeeform" action="eventassign" commandName="eventCommand" method="POST">
<table><tr><td><h3>Select the event</h3></td><td><form:select path="Eventname">
<form:option value="0" label="Select" />
<form:options items="${eventname}" itemValue="eventname" itemLabel="eventname" />
</form:select><br/></td></tr>
<tr><td><h3>Select the employee</h3></td><td>
<form:select path="Employee">
<form:option value="NONE" label="Select" />
<form:options items="${employeelist}"/>
</form:select></td></tr>
<tr><td><h3>Select the Products</h3></td><td><form:select path="Products">
<form:option value="0" label="Select" />
<form:options items="${Products}" itemValue="products" itemLabel="products" />
</form:select><br/></td></tr>
</table>
</form:form>
</body>
</html>
这是我的控制器
public ModelAndView getemployeeassign(@ModelAttribute("eventCommand")EventCommand eventCommand){
Map referenceData= new HashMap();
List<EventCommand> newlist=new ArrayList<EventCommand>();
newlist.addAll((service.eventManagementDAO.showEmployee()));
referenceData.put("employeelist",newlist);
return new ModelAndView("EventEmployee",referenceData);
}
这是我的EventCommand类
package com.wity.command;
public class EventCommand {
String Eventname;
String employee;
String Products;
public String getEventname() {
return Eventname;
}
public void setEventname(String Eventname) {
this.Eventname = Eventname;
}
public String getemployee() {
return employee;
}
public void setemployee(String employee) {
this.employee = employee;
//System.out.println(employee);
}
public String getProducts() {
return Products;
}
public void setProducts(String Products) {
this.Products = Products;
}
}
****上面的程序正确地从数据库中读取数据(多行)但显示对象而不是字符串。****
我在下拉框中获取输出为 因为我不能发布图像 我的输出是 com.hari.command.EventCommand@131e2c6 com.hari.command.EventCommand@53a8a1 帮我解决一下。我必须得到字符串中的值而不是对象。
答案 0 :(得分:4)
如果我正确地获取它,您必须指定正确的值和标签以显示正确的值并再次将正确的ID发回到JSP的后端。例如,使用<form:select>
,您可以这样做......
<form:select path="employee" id="employeeSelect">
<form:options items = "${employee}" itemValue="${employee.id}" itemLabel="${employee.firstname}"/>
</form:select>
现在我相信你没有指定属性,这就是它打印对象id的原因,默认为toString()。
答案 1 :(得分:2)
不能说我100%理解你,但在我看来,你需要在JSP页面上显示eventCommand.getEmployee()
而不是eventCommand
。没有JSP页面代码很难说清楚。
示例:
<form:select path="Employee">
<form:option value="NONE" label="Select" />
<form:options items="${employeelist}" itemLabel="employee"/>
</form:select>