Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate Struts 2未在表单提交上设置操作属性。捕获到意外异常。设置值为[';1';,]的表达式时出错_Hibernate_Struts2_Struts_Ognl - Fatal编程技术网

Hibernate Struts 2未在表单提交上设置操作属性。捕获到意外异常。设置值为[';1';,]的表达式时出错

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;

Struts 2给出了一个奇怪的行为,即表单提交时未设置商业、productCategory对象。这种情况在某些情况下会发生。其他字段设置正确

大多数情况下,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:


根据第一眼回答

我在你发布的代码中没有发现任何错误。但是根据它在开发模式下产生的错误,我的想法围绕着这个问题

错误

设置值为['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--" 
/>