2012-11-09 3 views
0

(내 jsp) 스프링 폼 태그를 사용하여 데이터를 바인딩하고 업데이트합니다.스프링 폼 태그가 기본값을 갖습니다.

내 시나리오는 사용자가 페이지를 열면 기본값을 보여줍니다. 이러한 기본값은 일부 조건에 따라 데이터베이스에서 가져와야합니다. 그러나 사용자가 데이터를 편집하고 제출할 때 기본값을 업데이트하지 않고 데이터베이스에 저장하려고합니다.

모든 의견을 크게 환영합니다!

답변

1

양식 페이지에 대한 표준 접근 방식은 컨트롤러에 GET 용과 POST 용의 두 가지 방법을 사용하는 것입니다. 또한 폼에 바인딩 할 객체가 필요합니다.

GET을 처리하는 메서드는 바인딩 개체를 설정하고이를 모델에 넣은 다음 양식 페이지에 대한보기를 반환합니다. 여기에있는 바인드 객체는 어디서나 얻을 수있는 기본값으로 만들 수 있습니다. 바인드 객체에는 ID와 같은 키가있을 것입니다. 기본 키는 0/기본 키를 가질 수 있습니다.

POST를 처리하는 메서드는 바인딩 개체를 매개 변수로 사용합니다. 아마도 값을 확인한 다음 데이터베이스에 삽입합니다. 그 가능성이 데이터베이스는 키/ID를 생성합니다.

다음은 예입니다.

@Controller 
public class PersonController { 

    @RequestMapping(value="/person.do", method=RequestMethod.GET) 
    public ModelAndView setup() { 
    ModelAndView response = new ModelAndView("person"); 

    //Create default bind object, can get values 
    //from database if you like. Here they're just 
    //hard coded. 
    Person person = new Person(); 
    person.setName("Joe Bloggs"); 

    response.addObject("person", person); 
    return response; 
    } 

    @RequestMapping(value="/person.do", method=RequestMethod.POST) 
    public ModelAndView post(@ModelAttribute("person") Person person, 
          BindingResult result) { 
    Validator.validate(person, result); 
    if (result.hasErrors()) { 
     ModelAndView response = new ModelAndView("person"); 
     response.addObject("person", person); 
     return response; 
    } else { 
     personDao.store(person); 
    } 

    return new ModelAndView("redirect:nextPage.do"); 
    } 

} 
0

양식은 사용자가 받침 개체에 입력 한 값으로 채워집니다. 나는 당신의 질문의 두 번째 부분을 이해하지 못합니다.

+0

나는 10 개의 위치를 ​​가지고 있습니다. 각 위치는 고유 한 값을 가질 수 있습니다. 그러나 기본적으로 양식 필드에는 기본값으로 몇 가지 값을 표시해야합니다. 이 기본값은 사용자가 변경하지 않기로 결정한 경우 모든 위치에서 동일하게 유지되어야합니다. 그러나 사용자가 변경하기로 결정하면 할 수 있습니다. 하지만, 나는 몇 가지 조건에 따라 이러한 10locations 사이에 분산 내 데이터베이스에 불과 4 기본값이 있습니다. –

관련 문제