将object [i]发送回控制器Spring MVC

时间:2014-02-21 14:37:48

标签: spring-mvc

我有搜索航班页面,完成搜索后我发送航班列表到jsp页面,

flights = getAllFlight();
ModelAndView mav = new ModelAndView("search_result");
mav.addObject("flights", flights);
return mav;

这是我的jsp页面显示航班结果

<c:forEach var="flight" items="${flights}">
<!-- display a little information, not all flight information -->
....
<button type="submit" class="btn btn-success">Add</button>
</c:forEach>

在每个航班行中,有“添加”按钮将航班信息添加到数据库,如何在“添加”按钮单击时发回航班对象?

2 个答案:

答案 0 :(得分:0)

应该有一些唯一的钥匙来唯一地识别每个航班,它可以是航班ID或某些属性的组合等属性。

如果您想使用表单子目录发送此值,您可以使用值航班ID保留隐藏的输入,一旦您提交表单,您将在控制器中获取它。

如果你想用ajax发送它,你可以在列表中添加这个航班ID作为这样的数据属性

点击添加按钮,使用jquery数据函数获取此值并进行ajax调用。

答案 1 :(得分:0)

我解决了这个问题, 通过创建类控制器的ArrayList属性, 按钮订阅点击时,将列表索引发送回控制器

<c:forEach var="flight" items="${flights}" varStatus="theCount"> ..... <td> <form:form action="${pageContext.request.contextPath}/flight/subcribe.html" method="POST">
<button class="btn btn-success" value="${theCount.index}" name="index">Subcribe</button> </form:form> </td> </c:forEach>

类控制器处理搜索航班发布和订阅航班发布,与ArrayList相同的类

@Controller
@RequestMapping(value = "/flight")
public class FlightController {
    private ArrayList<Flight> flights;

    @RequestMapping(value = { "/search" }, method = RequestMethod.POST)
    public ModelAndView getFlightFromSearch(@ModelAttribute Parameters param
    // ,Map<String, Object> model
    ) throws IOException, Exception {

             // send arraylist of light to jsp
    }

    @RequestMapping(value = "/subcribe", method = RequestMethod.POST)
    public ModelAndView subcribeFlight(@RequestParam("index") int index, @ModelAttribute Parameters param) throws ParseException 
    {
        Flight flight = flights.get(i);
                .......
    }
}