当我在spring mvc中从数据库中检索值时,我正在获取对象

时间:2015-01-16 15:12:40

标签: java spring jsp spring-mvc

我只是在春天的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 帮我解决一下。我必须得到字符串中的值而不是对象。

2 个答案:

答案 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>