Hibernate Struts 2未在表单提交上设置操作属性。捕获到意外异常。设置值为[';1';,]的表达式时出错
Struts 2给出了一个奇怪的行为,即表单提交时未设置商业、productCategory对象。这种情况在某些情况下会发生。其他字段设置正确 大多数情况下,struts 2都能很好地设置自定义对象,甚至对于对象内部的复杂对象(如List),但在这种情况下,它给出了奇怪的行为 有人可以帮忙吗?我可以调试struts 2代码来检查它为什么没有设置属性吗?如果可能,请告诉我步骤 休眠域对象:Hibernate Struts 2未在表单提交上设置操作属性。捕获到意外异常。设置值为[';1';,]的表达式时出错,hibernate,struts2,struts,ognl,Hibernate,Struts2,Struts,Ognl,Struts 2给出了一个奇怪的行为,即表单提交时未设置商业、productCategory对象。这种情况在某些情况下会发生。其他字段设置正确 大多数情况下,struts 2都能很好地设置自定义对象,甚至对于对象内部的复杂对象(如List),但在这种情况下,它给出了奇怪的行为 有人可以帮忙吗?我可以调试struts 2代码来检查它为什么没有设置属性吗?如果可能,请告诉我步骤 休眠域对象: public class Brand { private Long id;
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:
根据第一眼回答
我在你发布的代码中没有发现任何错误。但是根据它在开发模式下产生的错误,我的想法围绕着这个问题
错误
设置值为['1',]的'brand.commercial.id'错误设置表达式'brand.commercial.id'时捕获意外异常。]
可能的原因
brand.commercial.id
在同一格式的两个或多个位置用作名称变量。如果同一个变量在同一个名称中被设置了两次,则Struts会把它看作是一个列表,使得这个[[1],],假设Brand,.Maldal.ID不是一个列表。
另一种可能性是,某些列表值被设置为整数值 您是否有错误,或者它没有正确设置值?这些字段是指向这些类的实例还是
null
?它不仅仅设置属性commercial。没有错误。commercial为空。“brand.commercial.id”值未设置。以下是devmode true的异常。设置'brand.commercial.id'Error setting expression'brand.commercial.id'并使用值['1',]时发现意外异常。如果commercial
为空,则您需要将对象存储在会话范围中,而不是请求,或者在声明commercial
类时,使用CommercialType
类的实例初始化commercial
字段。老实说,前者听起来是正确的路线,但这取决于你在用它做什么。不能在不引用任何内容的字段上设置字段。谢谢Anthony Grist。Later工作得很好。我在父构造函数的构造函数中创建了子对象的实例。但我仍然想知道为什么会出现这种奇怪的行为。在大多数情况下,它工作得很好
<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--"
/>