【问题标题】:Struts 2 not setting action property on form submission. Unexpected Exception caught .Error setting expression with value ['1', ]Struts 2 未在表单提交时设置操作属性。捕获到意外异常。错误设置表达式的值为 ['1', ]
【发布时间】: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


【解决方案1】:

先看答案

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

错误

Unexpected Exception caught setting 'brand.commercial.id' Error setting expression 'brand.commercial.id' with value ['1', ]

可能的原因

brand.commercial.id 在同一个表格的两个或多个地方用作名称变量。如果同一个变量以相同的名称设置了两次,struts 将把它视为一个列表,这使得这个 `['1', ] 假设 brand.commercial.id 不是一个列表。

另一种可能是,某些列表值设置为整数值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    • 2015-02-06
    相关资源
    最近更新 更多