이 기본 기능을 가지고
protected ModelAndView handleRequestInternal(...) {
...
return new ModelAndView("welcomePage", "WelcomeMessage", message);
}
이것이 modelandView를 반환한다는 것을 알고 있습니다. 나는 그것이 welcomePage
내 뷰 welcomepage.jsp
이름이라는 것을 알고 있으므로 같은 것을 호출 할 것임을 의미합니다 .
그러나 나는 모델 부분이 무엇인지 혼동합니다. 무엇 WelcomeMessage
과 message
그 시나리오에서 어떻게 모델 작업은?
답변
모델은 뷰에 표시 할 정보를 보유하는 자리 표시자를 제공합니다. 위의 예에있는 문자열 일 수도 있고 여러 속성을 포함하는 객체 일 수도 있습니다.
예 1
당신이 가지고 있다면…
return new ModelAndView("welcomePage","WelcomeMessage","Welcome!");
… 그런 다음 jsp에서 메시지를 표시하려면 다음을 수행하십시오.
Hello Stranger! ${WelcomeMessage} // displays Hello Stranger! Welcome!
예 2
당신이 가지고 있다면…
MyBean bean = new MyBean();
bean.setName("Mike!");
bean.setMessage("Meow!");
return new ModelAndView("welcomePage","model",bean);
… 그런 다음 jsp에서 다음을 수행 할 수 있습니다.
Hello ${model.name}! {model.message} // displays Hello Mike! Meow!
답변
new ModelAndView("welcomePage", "WelcomeMessage", message);
~의 속기
ModelAndView mav = new ModelAndView();
mav.setViewName("welcomePage");
mav.addObject("WelcomeMessage", message);
위의 코드를 보면보기 이름이 “welcomePage”임을 알 수 있습니다. 귀하의 ViewResolver
(보통 설정은 .../WEB-INF/spring-servlet.xml
)는보기에이 변환합니다. 코드의 마지막 줄은 모델 ( addObject("WelcomeMessage", message)
) 의 속성을 설정합니다 . 그것이 모델이 작동하는 곳입니다.
답변
이것은 모두 생성자 에 대한 javadoc에 의해 설명됩니다 . 하나의 속성 / 값 쌍으로 모델을 채우는 편의 생성자입니다.
그래서 …
new ModelAndView(view, name, value);
다음과 같습니다.
Map model = ...
model.put(name, value);
new ModelAndView(view, model);
답변
이 경우 메서드에는 ModelandView 라는 3 개의 매개 변수가 있습니다.
이 질문에 따르면 첫 번째 매개 변수는 쉽게 이해됩니다. 클라이언트에 표시 될 보기 를 나타냅니다 .
다른 두 매개 변수는 포인터 와 홀더 와 같습니다 .
따라서 다음과 같이 요약 할 수 있습니다.
ModelAndView ( 뷰, 포인터, 홀더 );
포인터 는 홀더 의 정보를 가리 킵니다.
컨트롤러 가이 정보로 뷰 를 바인딩 하면 해당 프로세스 에서 JSP 페이지 의 포인터 를 사용하여 홀더 에 저장된 정보에 액세스하여 해당 정보를 클라이언트에 표시 할 수 있습니다. 다음은 존경받는 과정을 시각적으로 묘사 한 것입니다.
return new ModelAndView("welcomePage", "WelcomeMessage", message);
답변
Well, WelcomeMessage는 메시지의 변수 이름 일뿐입니다 (데이터가있는 실제 모델). 기본적으로 여기에서 welcomePage를 사용하여 모델을 바인딩합니다. 모델 (메시지)은 welcomePage.jsp에서 WelcomeMessage로 사용할 수 있습니다. 다음은 더 간단한 예입니다.
ModelAndView("hello","myVar", "Hello World!");
이 경우 내 모델은 간단한 문자열입니다 (애플리케이션에서는 DB 또는 기타 소스에 대해 가져온 데이터가있는 POJO입니다.). myVar에 할당하고 있으며 내 뷰는 hello.jsp입니다. 이제 myVar는 hello.jsp에서 사용할 수 있으며 디스플레이에 사용할 수 있습니다.
보기에서 다음을 통해 데이터에 액세스 할 수 있습니다.
${myVar}
마찬가지로 WelcomeMessage 변수를 통해 모델에 액세스 할 수 있습니다.
답변
ModelAndView : 이름 자체가 Model 및 View 데이터를 포함하는 데이터 구조임을 설명합니다.
Map() model=new HashMap();
model.put("key.name", "key.value");
new ModelAndView("view.name", model);
// or as follows
ModelAndView mav = new ModelAndView();
mav.setViewName("view.name");
mav.addObject("key.name", "key.value");
모델에 단일 값만 포함 된 경우 다음과 같이 작성할 수 있습니다.
ModelAndView("view.name","key.name", "key.value");
답변
@RequestMapping(value="/register",method=RequestMethod.POST)
public ModelAndView postRegisterPage(HttpServletRequest request,HttpServletResponse response,
@ModelAttribute("bean")RegisterModel bean)
{
RegisterService service = new RegisterService();
boolean b = service.saveUser(bean);
if(b)
{
return new ModelAndView("registerPage","errorMessage","Registered Successfully!");
}
else
{
return new ModelAndView("registerPage","errorMessage","ERROR!!");
}
}
/* "registerPage" is the .jsp page -> which will viewed.
/* "errorMessage" is the variable that could be displayed in page using -> **${errorMessage}**
/* "Registered Successfully!" or "ERROR!!" is the message will be printed based on **if-else condition**