Java Spring不在视图之间传递数据

Java Spring不在视图之间传递数据,java,spring,spring-mvc,model-view-controller,Java,Spring,Spring Mvc,Model View Controller,我是Spring MVC的新手。我在视图之间传递对象时遇到问题。我可以毫无问题地将对象飞行从视图“飞行”传递到视图“搜索飞行”。不应将任何对象从“searchFlight”传递到“bookFlight”,因为此时我将所需信息存储在控制器外部的静态对象中 在“bookFlight”中,我从静态对象(视图中不可编辑)加载所有数据,然后我想在“bookFlight”中收集数据并将其传递到“performBook”视图。收集的数据也存储在控制器外部的其他静态对象中。此时在“performBook”中,我

我是Spring MVC的新手。我在视图之间传递对象时遇到问题。我可以毫无问题地将对象飞行从视图“飞行”传递到视图“搜索飞行”。不应将任何对象从“searchFlight”传递到“bookFlight”,因为此时我将所需信息存储在控制器外部的静态对象中

在“bookFlight”中,我从静态对象(视图中不可编辑)加载所有数据,然后我想在“bookFlight”中收集数据并将其传递到“performBook”视图。收集的数据也存储在控制器外部的其他静态对象中。此时在“performBook”中,我可以引用静态对象并显示存储在中的数据,但我无法将“bookFlight”中的任何内容保存到我的静态对象中

如果我将静态对象更改为非静态(只需使用不同的metohd主体复制粘贴flighSearch方法),那么我也无法从form:form收集数据并将其保存在object中或将其传递到下一个视图

这是我的控制器。GlobalCache中的所有内容都是公共静态的。每个模型对象都有setter和getter

@RequestMapping(value = "/flight", method = RequestMethod.GET)
public ModelAndView flightSearch(ModelMap model) {
    GlobalCache.flight=new Flight();
    GlobalCache.flightTime=GlobalCache.generateFlightTIme()+1;
    GlobalCache.flight.setTravelLength(GlobalCache.flightTime);
    return new ModelAndView("flightSearch","command",new Flight());

}

@RequestMapping(value="searchFlight", method = RequestMethod.POST)
public String search(@ModelAttribute("user") Flight flight, ModelMap model) {
    model.addAttribute("departureDate",flight.getDepartureDate());
    model.addAttribute("departureAirport",flight.getArrivalAirport());
    model.addAttribute("arrivalDate", flight.getArrivalDate());
    model.addAttribute("arrivalAirport", flight.getArrivalAirport());
    model.addAttribute("ticketNo", flight.getTicketNo());
    model.addAttribute("travelType", flight.getTravelType());
    model.addAttribute("flight", flight);

    GlobalCache.flight=flight;
    GlobalCache.flightTime=GlobalCache.generateFlightTIme()+1;
    GlobalCache.flight.setTravelLength(GlobalCache.flightTime);

    return "results";
}

@RequestMapping(value="/bookFlight", method = RequestMethod.POST)
public ModelAndView bookFLight(@ModelAttribute("user") Ticket ticket, ModelMap model) {

    ticket=new Ticket();
    ticket.setClassesList(classes);
    ticket.setPaymentTypeList(paymentType);
    ticket.setSeatPositionList(seatPosition);
    ticket.setFlight(GlobalCache.flight);
    ticket.setPayment(new Payment());
    ticket.setUtil(new Util());
    ticket.getPayment().setAmountToPay(GlobalCache.generateTicketCost());

    Traveler traveler = new Traveler();
    ticket.setTraveler(traveler);

    model.addAttribute("ticket", ticket);
    model.addAttribute("flight", GlobalCache.flight);
    model.addAttribute("traveler", ticket.getTraveler());
    model.addAttribute("payment", ticket.getPayment());

    GlobalCache.ticket=ticket;

    return new ModelAndView("book","command",GlobalCache.ticket);
}

@RequestMapping(value="performBook", method = RequestMethod.POST)
public ModelAndView booked(@ModelAttribute("user") Ticket ticket, ModelMap model) {
    model.addAttribute("ticket", GlobalCache.ticket);
    return new ModelAndView("booked","command",GlobalCache.ticket);
}
“bookFlight”视图中的处理表单示例

在这个时候,我没有时间创建单独的控制器,希望它可以解决只有一个

 <form:input path="traveler.name" value="${traveler.name}" type="text" id="5" class="form-control" aria-describedby="basic-addon1"/>
class Ticket{
  private Flight flight;
  private Traveler traveler;
  private Util util;
  //getters and setters and other attributes
}