【发布时间】:2014-02-04 14:04:27
【问题描述】:
Struts 2 给出了一种奇怪的行为,即在提交表单时未设置商业、产品类别对象。在某些情况下会发生这种情况。其他字段设置正确
大多数情况下,struts 2 都很好地设置了自定义对象,甚至对于对象内部的 List 等复杂对象也是如此,但在这种情况下,它会给出奇怪的行为。
有人可以帮忙吗。我可以调试 struts 2 代码以检查为什么它没有设置属性。如果可能的话,让我知道步骤
休眠域对象:
public class Brand {
private Long id;
private String brandName;
private String brandDescription;
private Brand productSubCategory;
private ProductCategory productCategory;
private CommercialType commercial;
/* getters and setters */
}
JSP:
<s:select label = "Commercial Type"
name = "brand.commercial.id"
list = "#attr.masterData.commercialTypes"
listKey = "id"
listValue = "commercialType"
value = "%{brand.commercial.id}"
theme = "simple"
headerKey = ""
headerValue = "--Select--"
/>
【问题讨论】:
-
您是否收到错误或只是没有正确设置值?这些字段是指向这些类的实例还是
null? -
它不只是将属性设置为商业。没有错误。商业为空。“brand.commercial.id”值未设置。
-
这里是 devmode true 的例外。意外异常捕获设置“brand.commercial.id”错误设置表达式“brand.commercial.id”的值为 ['1', ]
-
如果
commercial为空,那么您需要将对象存储在会话范围内,而不是请求,或者在声明时使用CommercialType类的实例初始化commercial字段它。老实说,前者听起来像是正确的路线,但这取决于你用它做什么。您不能在不引用任何内容的字段上设置字段。 -
感谢 Anthony Grist.latter 工作正常。我在父构造函数的构造函数中创建了子对象的实例。但我仍然想知道为什么会出现这种奇怪的行为。在大多数情况下它工作正常
标签: hibernate struts2 struts ognl