在Spring MVC中使用Hibernate从SQL数据库填充下拉菜单


问题内容

我之前已经做过类似的事情,但是从未使用过这种特殊的配置。我查找的每个示例都显示了在控制器中设置了选项的下拉菜单,当我不希望它们在控制器中逐行设置,而是从SQL数据库的列中提取时。

我目前有其他表单是从同一表和列中提取的,但下拉列表中有。我什么都没有。这是JSP

这就是我在jsp中所拥有的,以前我使用过a c:forEach,并且我怀疑我可能不得不将其与jsp use bean一起使用。

<table>
    <tr>
        <td>Job:</td>
        <td>    
            <form:select path="Job.jobName">
                <form:option value="" label="Select Job"/>
                <form:options value="" items="${job.jobName}"/>
            </form:select>
        </td>
        <td><form:errors path="job.jobName" /> </td>
    </tr>
</table>

这是控制器中的方法调用,还有很多,但这是我正在使用的方法。

List<Job> jobList = jobService.listjobsByPage(page);

这是对DAOImpl的查询

public List<Job> getDataByJobName(String jobName) {            
     Session session = sessionFactory.openSession();
     List<Job> result = null;
     try{
            session.beginTransaction();
            Query query = session.createQuery("from Job where upper(jobName) like ? " +
                         "order by jobName");
            query.setParameter(0, "%" + jobName + "%");
            result = query.list();
            session.getTransaction().commit();
            session.close();
     } catch(Exception e){
            e.printStackTrace();
     }
     return result;
}

如果有人甚至可以向我指出正确的设置方向,那将是很大的帮助。

提前致谢。


问题答案:

您必须先做:

    ModelAndView model = new ModelAndView("index");
    model.addObject("lists", list);

    <form:select path="list">
        <form:options items="${lists}" />
    </form:select>