【问题标题】:Creating drop down list using Spring, Hibernate, JSP使用 Spring、Hibernate、JSP 创建下拉列表
【发布时间】:2014-12-17 09:00:45
【问题描述】:

应用程序:Hibernate、Spring 3.0 MVC、JSP(使用 Spring 表单)

要求:使用 Hibernate 从数据库中选择一个表数据,并使用 Spring MVC 将其显示为 JSP 页面中的下拉列表。

代码: Hibernate/Dao 代码是

美食课

@Entity
@Table(name = "cuisine")
public class Cuisine {
    @Id
    @Column(name = "id")
    private int id;

    @Column(name = "name")
    private String name;

.. getters and setters

RecipeDaoImpl 类

public List<Cuisine> getCuisine() {
    String hql = "SELECT id, name FROM Cuisine";
    return getSession().createQuery(hql).list();
}

Spring MVC

@Controller
public class RecipeController {
...
    @RequestMapping("/add")
    public String newRecipe(Map<String, Object> map) {  
        /* Get cuisine list and new object for cuisine */
        List<Cuisine> cuisines = recipeServices.getCuisine();
        System.out.println(cuisines);
        map.put("cuisineList", cuisines);
        map.put("cuisine", new Cuisine());

        return "recipes/new";
    }

JSP 页面:

<%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form"%>

<tr>
    <th><sf:label path="cuisine">Cuisine</sf:label></th>
</tr>

<tr>
    <td><sf:select path="${cuisineList}">
             <sf:options items="${cuisine}"></sf:options>
        </sf:select></td>
    </tr>

在执行此操作时,我收到以下错误:

org.springframework.beans.NotReadablePropertyException: Invalid property '[Cuisine [id=1, name=Continental][id=2, name=Italian]' of bean class [com.recipe.tables.Recipe]: Bean property '[Cuisine [id=1, name=Continental][id=2, name=Italian]' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?
    org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrapperImpl.java:729)
    org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrapperImpl.java:721)
    org.springframework.validation.AbstractPropertyBindingResult.getActualFieldValue(AbstractPropertyBindingResult.java:99)
    org.springframework.validation.AbstractBindingResult.getFieldValue(AbstractBindingResult.java:219)
    org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:120)

有人可以建议如何解决这个问题吗?我检查了几篇文章并尝试复制它们,但没有运气。

【问题讨论】:

    标签: java spring hibernate jsp spring-mvc


    【解决方案1】:

    我觉得jsp应该是

    <td><sf:select path="${cuisine}">
             <sf:options items="${cuisineList}" id="id" itemValue="name"></sf:options>
        </sf:select></td>
    </tr>
    

    【讨论】:

    • 谢谢.. 但它在下拉框中没有给出“[id=1, name=Continental]”的值.. 有什么方法可以在 JSP 页面中获取名称?跨度>
    • 非常感谢您的指点。我添加了 "" 并且它起作用了..
    • 我在这样做时遇到了这个错误...java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name,有什么线索吗?
    • 又一个错误ERROR: org.springframework.web.servlet.tags.form.SelectTag - Neither BindingResult nor plain target object for bean name
    猜你喜欢
    • 1970-01-01
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多