Я пытаюсь разобрать XML-файл и сохранить некоторую информацию в mongodb. Я получаю файл для разбора и отправки его на @Controller. Вот код метода POST из @Controller:mongoTemplate - null. Не могу понять, почему
@RequestMapping(value = TracksGeopointsRoutes.TRACKS, method = RequestMethod.POST)
public String tracks(@RequestParam MultipartFile file){
TracksGeopointsDoc tracksGeopointsDoc = new TracksGeopointsDoc();
try {
tracksGeopointsDoc.setFile(tracksGeopointsService.convert(file));
} catch (IOException e) {
e.printStackTrace();
}
mongoTemplate.save(tracksGeopointsDoc);
new MySaxParser(tracksGeopointsDoc.getFile().getAbsolutePath()); // here I give my file to my parser
return "com.ub.geopoints_test.index";
}
И мой парсер:
@Component
public class MySaxParser extends DefaultHandler{
@Autowired
MongoTemplate mongoTemplate;
private List<DotGeopointsDoc> dotGeopointsDocList;
String xmlFileName;
private String tmpValue;
private DotGeopointsDoc currentDotGeopointsDoc;
private DotGeopointsDoc dotGeopointsDoc;
String bookXmlFileName;
public MySaxParser() {
}
public MySaxParser(String bookXmlFileName) {
this.xmlFileName = bookXmlFileName;
dotGeopointsDocList = new ArrayList<DotGeopointsDoc>();
dotGeopointsDoc = new DotGeopointsDoc();
parseDocument();
}
private void parseDocument() {
// parse
SAXParserFactory factory = SAXParserFactory.newInstance();
try {
SAXParser parser = factory.newSAXParser();
parser.parse(xmlFileName, this);
} catch (ParserConfigurationException e) {
System.out.println("ParserConfig error");
} catch (SAXException e) {
System.out.println("SAXException : xml not well formed");
} catch (IOException e) {
System.out.println("IO error");
}
}
@Override
public void startElement(String s, String s1, String elementName, Attributes attributes) throws SAXException {
if (elementName.equalsIgnoreCase("trkpt")) {
dotGeopointsDoc.setId(new ObjectId());
dotGeopointsDoc.setLat(attributes.getValue("lat"));
dotGeopointsDoc.setLon(attributes.getValue("lon"));
}
}
@Override
public void endElement(String s, String s1, String element) throws SAXException {
if (element.equals("trkpt")) {
dotGeopointsDocList.add(dotGeopointsDoc);
mongoTemplate.save(dotGeopointsDoc); // here I'm getting NullPointerException. My mongoTemplate is null
dotGeopointsDoc = new DotGeopointsDoc();
}
}
@Override
public void characters(char[] ac, int i, int j) throws SAXException {
tmpValue = new String(ac, i, j);
}
}
На самом деле не понимаю, почему мой mongoTemplate равно нулю. Причина в моем @Controller это не так. Может ли кто-нибудь мне помочь?
Да, это сработало! Ты гений! Большое спасибо! – Dexa
Ваш прием :) – Wermerb