2013-03-11 1 views
0

Я немного разочарован в связи с тем, что Spring 3 не отображает мою модель в jsp, используя Expression Language, и я должен признать, что я не понимаю, почему. Если бы кто-нибудь мог помочь мне понять, почему я не могу заставить его работать, это будет действительно здорово.spring 3 not rendering model in jsp

Вот мой контекст:

Мой контроллер имеет метод (вызывается AJAX от моего клиента) возвращает фрагмент Jsp:

@RequestMapping(value = "/datagrid/getGoatCard", method = RequestMethod.POST) 
public String getGoatCard(@RequestParam Long id, 
     @ModelAttribute("goat") Goat goat) { 
    goat = goatDataService.findGoatById(id); 
    return "goatCard"; 
} 

Я называю этот метод с requestParam, позволяющей зимуют получить желаемое Боб (модель содержит все требуемые данные, она была проверена).

Затем этот метод извлекает jsp с именем «goatCard»; вот код JSP:

<input name="goat.goatName" type="hidden" value="${goat.goatName}"/> 

(это не весь код страницы, причина этого не будет легко читать, если слишком много коды представлена ​​мой JSP содержит JQuery easyui и Highcharts JavaScript librairies.)

Я, тем не менее, что аннотация @ModelAttribute («коза») связала модель, называемую «козой», с моей jsp, позволяющей отображать модель с помощью EL, но это не похоже.

Есть ли у кого-нибудь идеи, возможно, это просто мелочь, что я сделал не так, но я не вижу, какой из них !!!!

ответ

0

@ModelAttribute используется для извлечения формы, а не для отображения в JSP. Если вам нужно отобразить данные в JSP, вы должны сначала добавить данные в модель.

@RequestMapping(value = "/datagrid/getGoatCard", method = RequestMethod.POST) 
public ModelAndView getGoatCard(@RequestParam Long id) { 
    ModelAndView mv = new ModelAndView("goatCard"); 
    Goat goat = goatDataService.findGoatById(id); 
    mv.addObject("goat",goat); 
    return mv; 
} 

А затем козел доступен в JSP-файле. Кстати, для получения данных лучше использовать RequestMethod.GET.

+0

Благодарим за помощь, сейчас это работает нормально. Думаю, что я не понимаю, почему аннотации @ModelAttribute работают для формы, а не для рендеринга страниц. –

0

Большое спасибо за помощь. Просто ответ на обновление кода. Как я использую Spring 3, то лучше написать

@RequestMapping(value = "/datagrid/getGoatCard", method = RequestMethod.POST) 
public String getGoatCard(@RequestParam Long id, 
     Model model) { 
    model.addAttribute("goat", goatDataService.findGoatById(id)); 
    return "goatCard"; 
} 

Это просто, чтобы соответствовать больше к preconisation весны Foundation (я согласен это приведет к тому же результату, но SpringSource рекомендуют использование строки возврата вместо MAV).

Снова за вашу помощь

 Смежные вопросы

  • Нет связанных вопросов^_^