实体类:
public class Order {  ...

private Set<Flightsegment> flightSegments = new HashSet<Flightsegment>();

get/set方法...
}
public class Flightsegment {...}
...
   Order 和 Flightsegment 是一对多

      jsp:
<form action="updateOrderAction" method="post"  >   
       <c:forEach items="${order.flightSegments}" var="fls">
   <tr style="height:25px">
        
<td class="dvtCellInfo" align=center >${fls.fromTime}</td>
<td class="dvtCellInfo" align=center >
${fls.departureAirport }<br>(${fls.departureDateTime }) 
</td>
<td class="dvtCellInfo" align=center >${fls.arrivalAirport }<br>(${fls.arrivalDateTime})</td>
<td class="dvtCellInfo" align=center >${fls.flightNumber }</td>
<td class="dvtCellInfo" align=center >${fls.etingAirline }</td>
        <td class="dvtCellInfo" align=center >${fls.PNR }&nbsp;</td>
       /////主要是下面三行怎么写(在action里面进行update  Flightsegment )?
<td class="dvtCellInfo" align=center >
          
          &yen;<input type="text"  value="${fls.ticketPrice }"  name="ticketPrice" size="5" />
       </td>
<td class="dvtCellInfo" align=center >
&yen;<input type="text"  value="${fls.airPortFee }" name="airPortFee" size="5" />
</td>
<td class="dvtCellInfo" align=center >
        &yen;<input type="text"  value="${fls.fuelFee }" name="fuelFee" size="5" />
         </td>
       


        </tr>
       
       </c:forEach>
   
   
       </table>
   
   </form>
   
   
   
   
   action:
   private OrderService orderService;
private Integer id;
private Order order; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public OrderService getOrderService() {
return orderService;
} public void setOrderService(OrderService orderService) {
this.orderService = orderService;
} public Order getOrder() {
return order;
} public void setOrder(Order order) {
this.order = order;
} public BigDecimal totalPrice() {
BigDecimal bigDecimal = new BigDecimal(0);
Set<Flightsegment> set = order.getFlightSegments();
Iterator<Flightsegment> iterator = set.iterator();
while (iterator.hasNext()) {
Flightsegment f = iterator.next();
bigDecimal = bigDecimal.add(f.getTicketPrice().add(
f.getAirPortFee().add(f.getFuelFee())));
System.out.println(f.getSegiId() + "******************");
System.out.println(f.getTicketPrice() + "****************");
}
return bigDecimal;
} @Override
public String execute() {
order = orderService.findOrderbyId(id);
order.setOrderPrice(totalPrice()); return SUCCESS;
} public String update() { orderService.updateOrder(order); totalPrice();
return SUCCESS;
}
}    

解决方案 »

  1.   

    上次有提问过的吧
    你循环的时候
    ;<input type="text" value="${fls.airPortFee }" name="airPortFee" size="5" />也循环的吧
    那就是有N多个text的名字都叫做airPortFee
    那肯定你收不到内容了
    你想对他们修改的话
    为什么不把form缩短到C:foreach中
    每一个form都给定一个input不就好了嘛
    然后所有的form的action都是同一个
    只不过是对应的需要修改的实体类的ID不一样嘛
    也就是
    <c:foreach>
    <form action = "XXX.action" method = "post">//其他的略了
        <input type = "text" name = "airPortFee" value = "${}"/>
       //这里你就可以写多了个啊
       //但是别忘记了下面这个input
       <intpu type = "hidden" value = "id" name = "id"/>
    </form>
    </c:foreach>
    任务完成
    80分的积分是不是应该给我啊
    哈哈
      

  2.   

    你的action里只需要修改一个就好了如果你一定要批量修改
    你在页面foreach肯定不行
    需要使用js
    并且配合一个Map或者什么的这样麻烦不过既然你在列表里
    那就给列表一个连接
    然后在连接里单独修改你要修改的那个要是像在列表中修改
    那么你在没一个条目前面加一个radio
    选中的情况下才可以修改内容
    这样不是很好的么
    如果你想的话
    也可以使用checkbox麻烦而已
      

  3.   

    你说的也是一种解决方案,但是form不仅仅提交的是那三个值啊,还有其他的怎么办啊
      

  4.   

    分工要明确你这个form是不是要修改信息的
    你让他们单独完成一件事情
    然后组合起来
    就能完成很多你一个人完成那么多
    肯定会有很多硬编码
    并且程序写的不协调
    你也不舒服
    处理起来也麻烦如果你还要干别的那就到别的页面去
    比如说这个页面就是用来显示列表的
    我可以用一个form
    覆盖foreach进行删除
    因为删除只需要保存ID即可
    所以这个form就可以执行删除
    如果你像修改
    那么可以制造超链接啊
    页面跳转不仅仅只有表单提交
    还有超链接的嘛
    你的超链接
    利用ID进入该用户(或者什么的吧,就是这个意思和原理)的详细信息
    然后这个页面只有你一个用户
    一个form
    那你提交的时候不就好办多了嘛
    那就修改呗这样问题就北分解成N多个小问题去解决了