Struts2 商品列表及提交有关问题

Struts2 商品列表及提交问题
想要实现一个简易的商品系统。用Struts2框架。

在实现商品提交的时候遇到一些问题。

一个商品(goods)会有多个属性(价格、名字、数量、描述)。

客户跳转到点单页面时,应该看到的是一系列多条商品的信息

商品名称 商品价格 数量 留言  是否提交

商品1    1000      0 0     
商品2    1000      0 0   

然后,客户需要将数量字段填写,1或者更多,有留言,在留言处填写一些内容。

客户弄好一条或者多条的时候 ,可以提交到后台。

有两个问题:
1. 商品的列表怎么实现比较好?因为涉及到固定内容,还有需要手工输入的区域
2. 提交到后台的时候,应该是提交一条或者多条信息,这个信息初步我打算封装到一个goods类中。
   class goods
   {
      String ID;
      String name;
      String amount;
      String detailMsg;
   }

   然后后台,我初步打算后台有一个action 类(ProcessSubmitAction)会来接受客户提交的信息,一次提交的多个goods对象,
   ProcessSubmitAction 会拥有一个List<action> 的属性。 我需要怎么提交到后台呢(网上看到可以在做列表的时候,用index的形式。 但是
  我可能提交的是第三条和第十条,那我用下标去提交就是把list的第三条和第十条填充了,1和2 还有4-9 都是空的?)?

刚刚接触,希望有人提供一些帮助
------解决方案--------------------
用Extjs grid将数据以json格式提交过去
------解决方案--------------------
引用:
Quote: 引用:

把选中的在js里面封装好list ,在通过form表单提交,后台接受不就可以了。
嗯,你意思是说:提交的时候首先提交给js,js内部按顺序发出去吗? 有没有更直接的办法呢?struts标签是否能支持

不是这个意思,你提交之前封装一下就好。不是提交给js,js代码是嵌在jsp里面的。
------解决方案--------------------
引用:
前提条件

数据类:
Class goods
{
  String id;
  String amount;
  String detailMsg;
  String name;
}


Action 类
Class ActionOne
{
    List<goods> goodsList;
    Void excute()
    {

    }
}

现在我有n条商品信息。 每条信息包括 id, amount,detailMsg 和name;

如果我需要选择1-m条连续的数据到后台,那么,我只要把这1-m条数据分别给封装到goods类中,并分别用 ActionOne.goodsList[p ](0 至 m-1) 即可把这些连续的数据传到后台action中。 
如过我需要选择数据是不连续的,  比如说选择了第二条和第10条数据,如果还按照上面的方法的话,就是把这个数据分贝传给了ActionOne.goodsList[1] 和ActionOne.goodsList[9]。我感觉这样处理可能会有点问题。 所以就想,是否有什么办法,不指定下标,就将多个goods类对象传输goodsList 中。 或者是否有一个通用的方法。

请高手指点一下,谢谢

你每条信息不都是有id的么,你修改了2,10,就直接根据id把2,10这两条数据,对象返回,放List里,更新到DB不就好了么,list的size为什么一定要10,不应该是动态么
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

前提条件

数据类:
Class goods
{
  String id;
  String amount;
  String detailMsg;
  String name;
}


Action 类
Class ActionOne
{
    List<goods> goodsList;
    Void excute()
    {

    }
}

现在我有n条商品信息。 每条信息包括 id, amount,detailMsg 和name;

如果我需要选择1-m条连续的数据到后台,那么,我只要把这1-m条数据分别给封装到goods类中,并分别用 ActionOne.goodsList[p ](0 至 m-1) 即可把这些连续的数据传到后台action中。 
如过我需要选择数据是不连续的,  比如说选择了第二条和第10条数据,如果还按照上面的方法的话,就是把这个数据分贝传给了ActionOne.goodsList[1] 和ActionOne.goodsList[9]。我感觉这样处理可能会有点问题。 所以就想,是否有什么办法,不指定下标,就将多个goods类对象传输goodsList 中。 或者是否有一个通用的方法。

请高手指点一下,谢谢

你每条信息不都是有id的么,你修改了2,10,就直接根据id把2,10这两条数据,对象返回,放List里,更新到DB不就好了么,list的size为什么一定要10,不应该是动态么
你说的对呢,但是现在我不知道怎么 “对象返回,放到List里”。我能想到的方法就是 采用下标的方式顺序访问List中的元素。这也是我纠结的地方= =

你有一些非常非常基础的问题不明白,你在纠结什么下标啊。
你在Action定义的goodsList的大小,是根据你前台提交的数据决定的,不明白你还考虑什么下标?举个栗子:
你在Action定义了一个名为goodsList的集合,你在页面上提交了3个对象,那么你的goodsList就只有3个对象,你的对象肯定都封装了id,通过id来确定没一个对象。你上面说你有10个对象,你提交两个,如果是通过form提交那你必定要做处理,比如通过jquery得到你选中的id传到后台,再load不就行了。对象是通过id来区别的,数组也好集合也好只是一个容器,你在担心什么下标啊?这么基础的问题都不清楚还用什么struts啊,用servlet+jsp先熟悉一下吧。
不是,你误会了。 我知道你的意思,可是你没明白我的意思。 在web页面封装对象的时候,就应该使用下标来访问了。action.list[i ].attribute1 = x 这种形式。 这个id在我理解范围上,是不能避免的。 我来问是看是否有些控件,或者成熟的方法来处理这种情况。 用JS肯定是可以的,这个我也清楚,比如我需要提交两个对象,那么就只要通过action.list[0]  和action.list[1] 来访问-》赋值就可以了。 

在web页面封装对象的时候,就应该使用下标来访问了。action.list[i ].attribute1 = x 这种形式
我没明白你这句话的意思,你在web页面封装对象无非应该就是写对你的name,你在页面还赋值x是什么情况。例如:

<input type="text" name="ysZhengjians[0].yszhengjiannum" />
<input type="text" name="ysZhengjians[0].yszhengjianname" />
<input type="text" name="ysZhengjians[1].yszhengjiannum" />
<input type="text" name="ysZhengjians[1].yszhengjianname" />

你在Action定义一个名为ysZhengjians的List,它的泛型就是有yszhengjiannum,yszhengjianname的这个对象。你前台是应该填写的吧,你填的的什么就给对象的某个属性set的什么,你写赋值代码我没看懂什么意思。