如何使用注释控制器在命令对象内部使用一个对象作为弹簧形式?

时间:2011-12-23 07:17:14

标签: spring-mvc

我在另一个类中使用一个对象,它使用spring mvc作为命令对象,如下所示。

public class ManufacturerDO {
int manufacturerID;
String manufacturerName,manufacturerAddress;
}

这是我的命令对象下的域对象。我怀疑如何以弹簧形式获取此域对象中的字段。

我尝试使用以下内容:

<form:select  path="productManufacturer.manufacturerID">
        <c:forEach var="manufacturer" items="${manufacturerList}">
            <form:option value="${manufacturer.manufacturerName}">
                <c:out value="${manufacturer.manufacturerName}" />
            </form:option>
        </c:forEach>
</form:select>

但是得到以下异常: bean类[com.global.onlineShop.ProductDO]的属性“productManufacturer”无效:嵌套属性“productManufacturer”的值为null。

提前致谢

1 个答案:

答案 0 :(得分:1)

1)您应该将命令对象实例传递给视图。我是这样做的:

public ModelAndView myFunc(ModelAndView model) {
    /* .... */
    ManufacturerDO commandObject = new ManufacturerDO;
    model.addObject("productManufacturer", commandObject);
    return model;
}

(但我建议使用自动装配而不是在控制器操作中创建新实例)

2)在JSTL表单中,通过提供的密钥对命令对象进行标记点引用:

<form:form method="post" commandName="productManufacturer">

3)当您在JSTL表单标记中提供命令对象时,您可以在所有表​​单元素JSTL标记中的属性“path”中跳过commandObject的名称,所以让我们写一下:

<form:select path="manufacturerID">

4)当然 - 不要忘记命令对象类中的getter和setter。