实体类:
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 } </td>
/////主要是下面三行怎么写(在action里面进行update Flightsegment )?
<td class="dvtCellInfo" align=center >
¥<input type="text" value="${fls.ticketPrice }" name="ticketPrice" size="5" />
</td>
<td class="dvtCellInfo" align=center >
¥<input type="text" value="${fls.airPortFee }" name="airPortFee" size="5" />
</td>
<td class="dvtCellInfo" align=center >
¥<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;
}
}
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 } </td>
/////主要是下面三行怎么写(在action里面进行update Flightsegment )?
<td class="dvtCellInfo" align=center >
¥<input type="text" value="${fls.ticketPrice }" name="ticketPrice" size="5" />
</td>
<td class="dvtCellInfo" align=center >
¥<input type="text" value="${fls.airPortFee }" name="airPortFee" size="5" />
</td>
<td class="dvtCellInfo" align=center >
¥<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;
}
}
你循环的时候
;<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分的积分是不是应该给我啊
哈哈
你在页面foreach肯定不行
需要使用js
并且配合一个Map或者什么的这样麻烦不过既然你在列表里
那就给列表一个连接
然后在连接里单独修改你要修改的那个要是像在列表中修改
那么你在没一个条目前面加一个radio
选中的情况下才可以修改内容
这样不是很好的么
如果你想的话
也可以使用checkbox麻烦而已
你让他们单独完成一件事情
然后组合起来
就能完成很多你一个人完成那么多
肯定会有很多硬编码
并且程序写的不协调
你也不舒服
处理起来也麻烦如果你还要干别的那就到别的页面去
比如说这个页面就是用来显示列表的
我可以用一个form
覆盖foreach进行删除
因为删除只需要保存ID即可
所以这个form就可以执行删除
如果你像修改
那么可以制造超链接啊
页面跳转不仅仅只有表单提交
还有超链接的嘛
你的超链接
利用ID进入该用户(或者什么的吧,就是这个意思和原理)的详细信息
然后这个页面只有你一个用户
一个form
那你提交的时候不就好办多了嘛
那就修改呗这样问题就北分解成N多个小问题去解决了