我在另一个类中使用一个对象,它使用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。
提前致谢
答案 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。