programing

Spring MVC의 @ModelAttribute란 무엇입니까?

kingscode 2022. 7. 16. 15:52
반응형

Spring MVC의 @ModelAttribute란 무엇입니까?

의적과???????????? what what what의 목적과 용도는 무엇입니까?의 입니까?@ModelAttribute MVC에서?

@ModelAttribute 모델 오브젝트(MVC에서는 M)의 속성을 참조합니다.따라서 "Person"이라고 불리는 폼백오브젝트를 가진 폼이 있다고 칩시다스프링 MVC가 이 오브젝트를 컨트롤러 메서드에 공급하도록 하겠습니다.@ModelAttribute★★★★

public String processForm(@ModelAttribute("person") Person person){
    person.getStuff();
}

반면에 주석은 모델의 일부가 되어야 하는 객체를 정의하는 데 사용됩니다.따라서 모델에서 사용자 객체를 참조하려면 다음 방법을 사용할 수 있습니다.

@ModelAttribute("person")
public Person getPerson(){
    return new Person();
}

주석이 달린 이 방법을 사용하면 뷰의 인물 객체가 봄까지 모델에 자동으로 추가되므로 뷰의 인물 객체에 액세스할 수 있습니다.

"@ModelAttribute 사용"을 참조하십시오.

이게 오래된 실이라는 건 알지만, 저는 제가 좀 더 물을 흐릴 수 있는지 보기 위해 링에 모자를 던졌다고 생각했어요.

는 하려고 애썼다@ModelAttribute여러 개의 주석을 하나로 결합하기로 한 스프링의 결정의 결과였다.여러 개의 작은 주석으로 나누면 더 명확해졌습니다.

주석의 , '아노테이션'을 해 주세요.@ModelAttribute와와ententent에 @Autowired + @Qualifier즉, 스프링 관리 모델에서 지정된 이름의 콩을 검색하려고 합니다.이 붙은 수 없는 시키거나 "빈"을 반환하는 "빈"을 반환하십시오.null으로 '역할'을 맡습니다.@Bean즉, 기본 생성자를 사용하여 새 인스턴스를 만들고 모델에 Bean을 추가합니다.

주석의 , '어느 정도'를 .@ModelAttribute와와ententent에 @Bean + @Before방식

비유적으로, 그렇구나@ModelAttribute다음 중 하나

@Bean("person")
@Before
public Person createPerson(){
  return new Person();
}

@RequestMapping(...)
public xxx handlePersonRequest( (@Autowired @Qualifier("person") | @Bean("person")) Person person, xxx){
  ...
}

은 옳은 .@ModelAttribute모든 것을 망라한 주석; 아무도 주석 스모가스보드를 보고 싶어하지 않는다.

제 스타일은 항상 @ModelAttribute를 사용하여 spring form jsp에서 오브젝트를 잡습니다.예를 들어, jsp 페이지에 있는 폼을 디자인하면 해당 폼은 commandName과 함께 존재합니다.

<form:form commandName="Book" action="" methon="post">
      <form:input type="text" path="title"></form:input>
</form:form>

그리고 컨트롤러에 있는 물체를 팔로우 코드로 잡습니다.

public String controllerPost(@ModelAttribute("Book") Book book)

그리고 책의 모든 필드 이름은 형식의 하위 문자의 경로와 일치해야 합니다.

그래서 좀 더 쉽게 설명하도록 하겠습니다.이하를 들 수 있습니다.

public class Person {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(final String name) {
        this.name = name;
    }
}

Spring MVC 문서에서 설명한 바와 같이 @ModelAttribute 주석은 메서드 또는 메서드 인수에 사용할 수 있습니다.물론 한 대의 컨트롤러에서 동시에 사용할 수 있습니다.

1. 주석 방법

@ModelAttribute(“cities”)
 public List<String> checkOptions(){
 return new Arrays.asList(new[]{“Sofia”,”Pleven","Ruse”});//and so on
}

이러한 방법의 목적은 모델에 속성을 추가하는 것입니다.그래서 우리의 경우, 도시 키에는new Arras.asList(new[]{“Sofia”,”Pleven","Ruse”})모형의 값으로 간주할 수 있습니다(모형을 맵(키:값)으로 간주할 수 있습니다).컨트롤러 내의 @ModelAttribute 메서드는 동일한 컨트롤러 내에서 @RequestMapping 메서드보다 먼저 호출됩니다.

여기서는 사용자에게 표시하기 위해 폼에서 사용되는 모델 공통 정보를 추가하려고 합니다.예를 들어 HTML 선택을 채우기 위해 사용할 수 있습니다.

여기에 이미지 설명 입력

2. 방법론

public String findPerson(@ModelAttriute(value="person") Person person) {
    //..Some logic with person
    return "person.jsp";
}

메서드 인수의 @ModelAttribute는 인수를 모델에서 취득해야 함을 나타냅니다.따라서 이 경우 Model person 객체가 키로 지정될 것으로 예상되며, 이 객체의 값을 취득하여 메서드 인수 Person person에 포함시키고자 합니다.이러한 항목이 없거나 (가(값="person") 철자를 잘못 입력할 수 있음) 경우 Spring은 모델에서 해당 항목을 찾지 못하고 기본값을 사용하여 빈 개인 개체를 만듭니다.그런 다음 요청 매개변수를 가져와 이름을 사용하여 사용자 오브젝트에서 데이터 바인드를 시도합니다.

name="Dmitrij"&countries=Lesoto&sponsor.organization="SilkRoad"&authorizedFunds=&authorizedHours=&

이름이 있고 setName(String name)을 사용하여 Person.name에 바인드됩니다.그래서...

//..Some logic with person

"Dimitrij"라는 값을 가진 이름을 사용할 수 있습니다.

물론 Spring은 Lists, Maps, List of Maps 등 보다 복잡한 객체를 바인딩할 수 있지만, 이면에서는 데이터 바인딩의 마법을 만들어 냅니다.

  1. 인수에는 모델 주석 메서드와 요청 메서드 핸들러를 @ModelAttribute로 동시에 지정할 수 있습니다.그럼 우리는 규칙을 결합해야 한다.

  2. 물론 @ModelAttribute 메서드는 @ControllerAdvice 등에서 정의할 수 있습니다.

파티에 늦은 건 알지만, 그들이 말하는 대로 "늦는 게 안 하는 것보다 낫다"고 말할게요. 그럼 이제 도 각자 할 수 있는 들어 를 들어 여러분들은 각자 다른 방법으로 설명을 하고 있습니다.요약해서 예를 들어 간단히 설명을 해드릴게요.심플한 형식이 있다고 가정해 봅시다.form.jsp:

<form:form action="processForm" modelAttribute="student">
  First Name : <form:input path="firstName" /> 
  <br/><br/>
  Last Name : <form:input path="lastName" />
  <br/><br/>
  <input type="submit" value="submit"/>
</form:form>

<form:input path="firstName" /> <form:input path="lastName" />학생입니다.겟터시되며 설정자의 은 신시, 가음, 음음, 음음음, 으로 표시된 됩니다.modelAttribute="student"폼태그에 있습니다.

우리는 가지고 있다.StudentController방법에는 다음과 같은 .

@RequestMapping("/showForm")
// `Model` is used to pass data between controllers and views
public String showForm(Model theModel) {
    // attribute name, value
    theModel.addAttribute("student", new Student());
    return "form";
}
   
@RequestMapping("/processForm")
public String processForm(@ModelAttribute("student") Student theStudent) {
    System.out.println("theStudent :"+ theStudent.getLastName());
    return "form-details";
}

//@ModelAttribute("student") Student theStudent
//Spring automatically populates the object data with form data 
//all behind the scenes

,.form-details.jsp:

<b>Student Information</b>
${student.firstName}
${student.lastName}

다시 '뭐야?'라는.@ModelAttribute봄 MVC에서?소스(http://www.baeldung.com/spring-mvc-and-the-modelattribute-annotation)의 정의 예:@ModelAttribute는 메서드 파라미터 또는 메서드 반환값을 명명된 모델속성에 바인드한 후 웹 뷰에 표시하는 주석입니다.

실제로 발생하는 것은 전송된 폼의 모든 값을 취득한 후 오브젝트에 바인드 또는 할당할 수 있도록 보관 유지하는 것입니다. 해서 '먹다'와 을 합니다.@RequestParameter여기서는 파라미터만 취득하여 method 인수에 값을 할당합니다. 점은 '하다'는 것입니다.@ModelAttribute에는 단일 파라미터가 아닌 모든 폼 데이터가 저장됩니다.양식에서 제출된 데이터를 보관하는 빈을 만듭니다.

전체 내용을 요약하면:

1 서 11:
의 메서드 「」가 송신됩니다.showForm() 즉 콩이 '이라는 되어 있습니다.student다음과 같이 합니다.
theModel.addAttribute("student", new Student());

2 서 22:
속성 " " "modelAttribute="student"양식 제출 시 모델이 학생을 업데이트하고 양식의 모든 매개 변수를 보유하도록 정의합니다.

3 서 3:
시 " " " "processForm()는 파라미터 "Manager"를하여 호출됩니다.@ModelAttribute("student") Student theStudent: 과 같은 값modelAttribute="student"되었습니다.Student★★★★★★ 。

4 ★★ 4:
제가 했던 할 때 합니다. 제가 했던 것처럼 페이지 등에 보여주는 것처럼요.

개념을 이해하는 데 도움이 되었으면 좋겠어요.고마워요.

Gmail, Facebook, Instagram, 기타 웹 응용 프로그램 등 모든 웹 응용 프로그램이 최종 사용자와 응용 프로그램 또는 UI와 백엔드 응용 프로그램 간에 데이터 또는 정보를 교환합니다.봄 MVC 세계에서도 데이터를 교환하는 방법은 두 가지가 있습니다.

  1. 컨트롤러에서 UI로,
  2. UI에서 컨트롤러로 이동합니다.

여기서 주목하는 것은 데이터가 UI에서 컨트롤러로 전달되는 방법입니다.이 작업은 다음 두 가지 방법으로도 수행할 수 있습니다.

  1. HTML 폼 사용
  2. 쿼리 매개 변수 사용.

HTML 폼 사용: 다음 시나리오를 고려해 주십시오.

양식 제출 표현

웹 브라우저에서 폼 데이터를 전송하면 컨트롤러 클래스의 해당 데이터에 개체로 액세스할 수 있습니다.HTML 양식을 제출하면 Spring Container는 네 가지 작업을 수행합니다.그것은 그럴거다.

  1. 먼저 request.getParameter 메서드를 사용하여 요청으로 전송된 모든 데이터를 읽습니다.
  2. 데이터를 읽으면 integer.parseInt, double.parseDouble 및 데이터의 데이터 유형에 따라 사용할 수 있는 기타 모든 해석 방법을 사용하여 적절한 Java 유형으로 변환됩니다.
  3. 해석하면 우리가 만든 모델 클래스의 개체가 생성됩니다.예를 들어, 이 시나리오에서는 사용자 정보가 전송되고 컨테이너가 개체를 만들고 해당 개체로 들어오는 모든 값을 자동으로 설정합니다.
  4. 그런 다음 컨트롤러에 값을 설정하여 해당 객체를 인계합니다.

이 모든 것이 제대로 돌아가려면 몇 가지 절차를 밟아야 합니다.

내부 작업

먼저 사용자 등의 모델클래스를 정의해야 합니다.이 모델클래스는 HTML 폼의 필드 수와 정확히 일치해야 합니다.또한 HTML 양식에서 사용하는 이름은 Java 클래스에 있는 이름과 일치해야 합니다.이 두 가지는 매우 중요합니다.이름은 일치해야 하며 양식의 필드 수는 만든 클래스의 필드 수와 일치해야 합니다.이렇게 하면 컨테이너가 자동으로 수신된 데이터를 읽고, 이 모델의 개체를 만들고, 값을 설정하고 컨트롤러에게 전달합니다.컨트롤러 내에서 이러한 값을 읽으려면 메서드 파라미터에 @ModelAttribute 주석을 사용합니다.컨트롤러에서 메서드를 작성할 때 @ModelAttribute를 사용하여 이 오브젝트가 자동으로 컨테이너에 의해 지정되는 파라미터를 추가합니다.

다음으로 사용자 등록용 코드 예를 나타냅니다.

@RequestMapping(value = "registerUser", method = RequestMethod.POST)
public String registerUser(@ModelAttribute("user") User user, ModelMap model) {
    model.addAttribute("user", user);
    return "regResult";
}

이 도식적인 설명이 도움이 되었기를 바랍니다!

@ModelAttribute는 메서드 인수/파라미터 또는 메서드 선언 전에 사용할 수 있습니다.요청 매개 변수 또는 양식 필드를 모델 개체에 바인딩하는 이 주석의 주요 목적

참조: http://www.javabeat.net/modelattribute-spring-mvc/

데이터 됩니다.MVC. 폼: 를spspsp jsp sp . . . . . . . . . . )

JSP

<form:form action="test-example" method="POST" commandName="testModelAttribute"> </form:form>

(스프링 폼 방식, 심플 폼 요소 사용 가능)

컨트롤러 측

@RequestMapping(value = "/test-example", method = RequestMethod.POST)
public ModelAndView testExample(@ModelAttribute("testModelAttribute") TestModel testModel, Map<String, Object> map,...) {

}

이제 양식을 제출할 때 양식 필드의 값을 사용할 수 있습니다.

메서드 매개 변수 또는 메서드 반환 값을 명명된 모델 속성에 바인딩하는 주석으로, 웹 뷰에 표시됩니다.

public String add(@ModelAttribute("specified") Model model) {
    ...
}

@ModelAttribute는 사용자가 의 Attribute를 .(@ModelAttribute("Testing") Test test) as Testing bean 할 수 에 의해, , 더 할 수 됩니다.ModelAttribute.

@ModelAttribute는 컨트롤러 클래스에서 논리를 실행하기 위해 jsp 필드의 값을 Pojo cals로 바인드하기만 하면 됩니다.struts에 익숙하다면 이는 제출 시 폼빈 개체를 채우는 것과 같습니다.

ModelAttribute 주석은 스프링 MVC 웹 응용 프로그램의 일부로 사용되며 두 가지 시나리오에서 사용할 수 있습니다.

우선 JSP 전 로드 모델에 데이터를 주입하는 데 사용할 수 있습니다.이는 특히 모든 데이터를 표시하기 위해 JSP가 필요한 경우에 유용합니다.하나의 방법을 모델에 접속함으로써 주입을 얻을 수 있다.

둘째, 기존 모델에서 데이터를 읽고 이를 코치 방법의 매개변수에 할당하는 데 사용할 수 있습니다.

레퍼런스 https://dzone.com/articles/using-spring-mvc%E2%80%99s

메서드 레벨로

1. 방법 수준에서 주석을 사용하는 경우 이 방법의 목적은 하나 이상의 모델 속성을 추가하는 것임을 나타냅니다.

@ModelAttribute
public void addAttributes(Model model) {
model.addAttribute("india", "india");
}

Method 인수 1에서.메서드 인수로 사용되는 경우 모델에서 인수를 검색해야 함을 나타냅니다.존재하지 않는 경우 먼저 인스턴스화한 후 모델에 추가하고 모델에 있는 경우, 인수 필드는 일치하는 이름을 가진 모든 요청 매개 변수에서 채워져야 합니다. 따라서 폼 데이터를 빈으로 바인딩합니다.

 @RequestMapping(value = "/addEmployee", method = RequestMethod.POST)
  public String submit(@ModelAttribute("employee") Employee employee) {
  return "employeeView";
  }

언급URL : https://stackoverflow.com/questions/3423262/what-is-modelattribute-in-spring-mvc

반응형