Весенняя модель MVC - PullRequest
       5

Весенняя модель MVC

1 голос
/ 22 июня 2011

Я пытаюсь отобразить исключение, произошедшее в контроллере на слое вида. Для этого я настроил блок try catch:

public String persistUserData( )
{
  try
    {
        //Make DB Call
        // Update DB and get new Data

        model.addAttribute( "updatedData", data );

        throw new Exception("Creating an Exception");

    }
    catch(Exception e)
    {
        model.addAttribute("myException", ex.getClass());

    }

    return "myPage.jsp";
}

На мой взгляд, я пытаюсь напечатать его с помощью ${myException}, но ничего не печатается. Что здесь не так?

Ответы [ 3 ]

3 голосов
/ 22 июня 2011

Мне очень жаль говорить об этом, но это работает для меня ...

@Controller
@RequestMapping("/")
public class MyController {

    @RequestMapping
    public String omg(@RequestParam("name") String name, Model model) {
        try {
            model.addAttribute("name", name);
            throw new Exception("OMG!");
        } catch (Exception e) {
            model.addAttribute("myException", e);
        }
        return "/WEB-INF/foo.jsp";
    }

}

И foo.jsp:

Name: ${name}<br/>
Error was: ${myException}

Это рендеринг (с конфигурацией Spring MVC по умолчанию)под http://localhost:8080/app/?name=abc):

Name: abc
Error was: java.lang.Exception: OMG!

Клянусь!

1 голос
/ 23 июня 2011

Вы можете использовать этот шаблон:

   @Controller
    @RequestMapping("/")
    public class MyController {
         //catch any exception 
         @ExceptionHandler(Exception.class)
          public ModelAndView handleMyException(Exception  exception) {
             ModelAndView mv = new ModelAndView("errorPage);
             mv.addObject("message",exception.getMessage());
             return mv;
                  } 

          @RequestMapping(value="/doSomething", method=RequestMethod.GET)
          public ModelAndView doSomething() {
           /doSomething
         throw new Exception("OMG!");
            return mv;
                  } 

    }

Надеюсь, это поможет.

0 голосов
/ 22 июня 2011

Вы должны вернуть модель из функции, которая будет выглядеть как

return model;

И модель должна быть типа ModelAndView.

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