У меня есть список, который я пытаюсь пролистать. По сути, у меня есть файл XML с некоторыми полетами на них. Я пытаюсь увидеть, находится ли пользователь в файле XML, если он есть, и отобразить его обратно на странице JSP. Что происходит, только первые элементы в моем XML хранятся в переменных. Мне нужно иметь возможность просмотреть весь файл XML и посмотреть, существует ли пользовательский ввод. Например, исходя из того, что у меня сейчас есть, если я использую if (startLocation.equals(flight.getStartLocation()) && endLocation.equals(flight.getEndLocation()))
, он вернет только Лос-Анджелес, Калифорния для startLocation и Манчестер, NH для endLocation. Если пользователь переключает то, что находится в окне выбора, это не работает; как я уже говорил, он собирает только первый элемент полета.
FlightController. Java
@RequestMapping(value = "/submit-search", method = RequestMethod.POST)
public String submitSearch(@RequestParam("name") String name, @RequestParam("startLocation") String startLocation, @RequestParam("endLocation") String endLocation,
@RequestParam("date") String date, @RequestParam("passengers") Integer passengers, Model model) throws JAXBException, IOException {
generateFlights();
File file = ResourceUtils.getFile("classpath:flights.xml");
try {
JAXBContext context = JAXBContext.newInstance(FlightList.class);
Unmarshaller un = context.createUnmarshaller();
FlightList flightList = (FlightList) un.unmarshal(file);
List < Flight > list = flightList.getFlights();
for (Flight flight: list) {
if (startLocation.equals(flight.getStartLocation()) && endLocation.equals(flight.getEndLocation()))
{
model.addAttribute("startLocation", flight.getStartLocation());
model.addAttribute("endLocation", flight.getEndLocation());
model.addAttribute("date", flight.getDate());
return "ticketInfo";
}
else {
// Does not exist
return "invalidTicket";
}
}
} catch (JAXBException e) {
model.addAttribute("error", e.toString());
return "error";
}
return null;
}
Flight. Java
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlRootElement(name="flight")
@XmlType(propOrder = { "startLocation", "endLocation", "date" })
public class Flight {
// Create variables
String startLocation;
String endLocation;
String date;
// Getters and setters for Flight class
@XmlElement
public String getStartLocation() {
return startLocation;
}
public void setStartLocation(String startLocation) {
this.startLocation = startLocation;
}
@XmlElement
public String getEndLocation() {
return endLocation;
}
public void setEndLocation(String endLocation) {
this.endLocation = endLocation;
}
@XmlElement
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
}
FlightList. java
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class FlightList {
// XmlElement sets the name of the entities
@XmlElement(name = "flight")
private List<Flight> flights;
public void setFlights(List<Flight> flights) {
this.flights = flights;
}
public List<Flight> getFlights() {
return flights;
}
}
рейсы. xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<flightList>
<flight>
<startLocation>Los Angeles, CA</startLocation>
<endLocation>Manchester, NH</endLocation>
<date>03-22-2020</date>
</flight>
<flight>
<startLocation>Boston, MA</startLocation>
<endLocation>Albany, NY</endLocation>
<date>03-20-2020</date>
</flight>
</flightList>