jsp页面中有一个循环list,每一行输入数量:
<input type="text"
     name="productItemList[${t.index}].sum" size="8" />
Action中字段是:
private List<ProductItem> productItemList;
ProductItem类中有Long 类型的sum。
因为数量是Long类型,页面数量如果输入字符串,则Struts2会提示:Invalid field value for field "productItemList[1].sum".  
怎么样在properties里填写信息覆盖,这个提示太不友好了,提示:迷糊点在properties里不知道怎么写这个sum字段
invalid.fieldvalue.productItemList.sum 和invalid.fieldvalue.sum ,invalid.fieldvalue.productItemList都不对,求高手指点。

解决方案 »

  1.   

    楼主的代码是什么意思呢?
    <input type="text"  name="productItemList[${t.index}].sum" size="8" />
    从这行代码我得出以下结论:
    1. 应该是放在<s:iterator>标签下的,循环产生若干个textbox
    2. 每个textbox的name的值都不一样(除非productItemList中每个元素的sum值都是一样的,这个可能性应该不大吧,否则应该修改数据表示结构了)基于以上两点,如果楼主提交表单的时候,Action中如何获取这些textbox的数据呢?在编码中你应该还做不到动态产生变量吧(页面上textbox的name属性对应Action中属性的名字,保持一致)?如果你想是输入一个数组,那么应该所有textbox的name都一样啊?
      

  2.   

    每一个默认的数量是1,可以修改,提交后List循环就可以得到每一项的sum。
    Acttion中如何获取这些textbox,Action中得到的是一个List<ProductItem>集合对象,遍历就能得到这些对象的属性值。
    Action中属性是List<ProductItem> productItemList, 
      

  3.   


    照啊,你既然想把这一系列的textbox作为List中的元素,那么textbox的name应该是List对象的名字啊?这是struts2最基本的用法。所以你的问题不在于validate的properties无效,我觉得可能先看看struts2的文档比较有帮助。