Java Spring不在视图之间传递数据
我是Spring MVC的新手。我在视图之间传递对象时遇到问题。我可以毫无问题地将对象飞行从视图“飞行”传递到视图“搜索飞行”。不应将任何对象从“searchFlight”传递到“bookFlight”,因为此时我将所需信息存储在控制器外部的静态对象中 在“bookFlight”中,我从静态对象(视图中不可编辑)加载所有数据,然后我想在“bookFlight”中收集数据并将其传递到“performBook”视图。收集的数据也存储在控制器外部的其他静态对象中。此时在“performBook”中,我可以引用静态对象并显示存储在中的数据,但我无法将“bookFlight”中的任何内容保存到我的静态对象中 如果我将静态对象更改为非静态(只需使用不同的metohd主体复制粘贴flighSearch方法),那么我也无法从form:form收集数据并将其保存在object中或将其传递到下一个视图 这是我的控制器。GlobalCache中的所有内容都是公共静态的。每个模型对象都有setter和getterJava Spring不在视图之间传递数据,java,spring,spring-mvc,model-view-controller,Java,Spring,Spring Mvc,Model View Controller,我是Spring MVC的新手。我在视图之间传递对象时遇到问题。我可以毫无问题地将对象飞行从视图“飞行”传递到视图“搜索飞行”。不应将任何对象从“searchFlight”传递到“bookFlight”,因为此时我将所需信息存储在控制器外部的静态对象中 在“bookFlight”中,我从静态对象(视图中不可编辑)加载所有数据,然后我想在“bookFlight”中收集数据并将其传递到“performBook”视图。收集的数据也存储在控制器外部的其他静态对象中。此时在“performBook”中,我
@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
}