Загрузка файла Spring MVC 3.0.x - Почему не возвращается исходная модель? - PullRequest
0 голосов
/ 16 декабря 2011

Я использую Springs MVC 3.0.x для загрузки файла CSV.Прочитав статью Карсона Макдональда , я обнаружил, что загрузить файл довольно просто.В своем примере он называет свою модель UploadItem.Моя модель называется CsvFile, это просто POJO.

Я хотел улучшить модель, чтобы она также содержала источник данных.Итак, я определил bean-компонент источника данных в xml и создаю его экземпляр при вызове метода GET.Объект имел хеш-код 3fa980b.Конструктор, который принимает источник данных, был вызван, как и ожидалось, при загрузке файла конфигурации Spring Bean.Затем я добавляю его в org.springframework.ui.Model.

@RequestMapping( method = RequestMethod.GET)
public String getUploadForm(Locale locale, Model model) {
    ApplicationContext context = new ClassPathXmlApplicationContext("observation-service.xml");
    CsvFile csvFile = (CsvFile)context.getBean("csvfile");
    logger.info("csvfile in get " + csvFile.toString() );
    model.addAttribute("csvFile",csvFile);
    return "npnSubmitData";
}

Следующий шаг застал меня врасплох.Когда вызывается обработчик POST, вызывается конструктор по умолчанию для CsvFile.Это обеспечивает доступ к объекту CsvFile, но отличается от хеш-кода 53b5168d, а источник данных имеет значение null.Я ожидал, что тот же объект будет возвращен.

@RequestMapping(method = RequestMethod.POST)
public String create(CsvFile csvFile, BindingResult result) {
    logger.info("upload file. " + csvFile.toString());
    if (result.hasErrors()) {
        return "npnSubmitData";
    }
    return "populated";
}

Почему исходный объект не возвращается?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...