복붙노트

[SPRING] 봄, 요청 방법 'POST'가 지원되지 않음 [닫힘]

SPRING

봄, 요청 방법 'POST'가 지원되지 않음 [닫힘]

우선이 질문을 반복하는 사과를하십시오.

사실 내 봄 응용 프로그램에서 나는 user.jsp 및 professional.jsp가있다.

여기 내 User.jsp가있다.

  <form:form action="profile/user" modelAttribute="profile">
    <div>
        <jsp:include page="professional.jsp"></jsp:include>
    </div>

</form:form>

그리고 여기 내 professional.jsp입니다 :

   <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<fieldset id="profile_proffiesional">
    <form:form action="profile/proffiesional" modelAttribute="PROFESSIONAL" method="POST">
        <p>
            <label for="position">Position</label>
            <form:input path="position" tabindex="4" />
        </p>
        <p>
            <label for="location">Location</label>
            <form:input path="location" tabindex="5" />
        </p>
        <p>
            <label for="description">Description</label>
            <form:input path="description" tabindex="5" />
        </p>
        <p>
            <input type="submit" value="Add">
        </p>
    </form:form>
</fieldset>

그리고 여기 내 컨트롤러 클래스입니다 :

    @Controller
@RequestMapping(value = "profile")
public class UserProfileController {

    @Autowired
    private UserService userService;

    @Autowired
    private SessionData sessionData;

    @RequestMapping(value = "user", method = RequestMethod.GET)
    public String user(Model model) throws Exception {
        model.addAttribute("PROFESSIONAL", new UserProfessionalForm());
        model.addAttribute("EDUCATIONAL", new UserEducationalForm());
        model.addAttribute("AWARDS", new UserAwardsForm());
        return "profile/user";
    }

    @RequestMapping(value = "proffessional", method = RequestMethod.POST)
    public @ResponseBody
    String forgotPassword(UserProfessionalForm professionalForm,
            BindingResult result, Model model) {

        UserProfileVO userProfileVO = new UserProfileVO();
        userProfileVO.setUser(sessionData.getUser());
        userService.saveUserProfile(userProfileVO);
        model.addAttribute("professional", professionalForm);
        return "Your Professional Details Updated";
    }
}

문제는 우리가 professional.jsp에서 Add 버튼을 클릭했을 때 서버 콘솔에는 응답이없고 아래에 경고 메시지가 표시됩니다.

  29 Mar, 2013 1:03:51 PM org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver handleHttpRequestMethodNotSupported
WARNING: Request method 'POST' not supported

왜이 경고가 오나요? 나는 이미 지정된 method = "POST"입니다.

도와주세요..

해결법

  1. ==============================

    1.user.jsp :

    user.jsp :

     <form:form action="profile/proffesional" modelAttribute="PROFESSIONAL">
         ---
         ---
        </form:form>
    

    귀하의 컨트롤러 클래스 :

    (의미 전체 메서드 이름으로 ... 내가 DB에 삽입 레코드라고 생각해.)

    @RequestMapping(value = "proffessional", method = RequestMethod.POST)
        public @ResponseBody
        String proffessionalDetails(
                @ModelAttribute UserProfessionalForm professionalForm,
                BindingResult result, Model model) {
    
            UserProfileVO userProfileVO = new UserProfileVO();
    
            userProfileVO.setUser(sessionData.getUser());
            userService.saveUserProfile(userProfileVO);
            model.addAttribute("PROFESSIONAL", professionalForm);
    
            return "Your Professional Details Updated";
    
        }
    
  2. ==============================

    2.Jsp에서 :

    Jsp에서 :

    action="profile/proffiesional"
    

    컨트롤러에서

    @RequestMapping(value = "proffessional", method = RequestMethod.POST)
    

    맞춤법 오류!

  3. ==============================

    3.내 스프링 보안 xml 파일에서 csrf를 사용하도록 설정 했으므로 한 줄만 추가했습니다.

    내 스프링 보안 xml 파일에서 csrf를 사용하도록 설정 했으므로 한 줄만 추가했습니다.

    <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" /> 
    

    이 방법으로 모델 속성이있는 양식을 제출할 수있었습니다.

  4. ==============================

    4.비밀번호 분실 메서드에서 UserProfessionalForm 전문 양식 매개 변수에 대한 @ModelAttribute 주석이 없습니다.

    비밀번호 분실 메서드에서 UserProfessionalForm 전문 양식 매개 변수에 대한 @ModelAttribute 주석이 없습니다.

    @RequestMapping(value = "proffessional", method = RequestMethod.POST)
    public @ResponseBody
    String forgotPassword(@ModelAttribute UserProfessionalForm professionalForm,
            BindingResult result, Model model) {
    
        UserProfileVO userProfileVO = new UserProfileVO();
        userProfileVO.setUser(sessionData.getUser());
        userService.saveUserProfile(userProfileVO);
        model.addAttribute("professional", professionalForm);
        return "Your Professional Details Updated";
    }
    
  5. ==============================

    5.이 시도

    이 시도

    @RequestMapping(value = "proffessional", method = RequestMethod.POST)
        public @ResponseBody
        String forgotPassword(@ModelAttribute("PROFESSIONAL") UserProfessionalForm professionalForm,
                BindingResult result, Model model) {
    
            UserProfileVO userProfileVO = new UserProfileVO();
            userProfileVO.setUser(sessionData.getUser());
            userService.saveUserProfile(userProfileVO);
            model.addAttribute("professional", professionalForm);
            return "Your Professional Details Updated";
        }
    
  6. ==============================

    6.정보에 대한 나는 action 속성을 제거하고 아약스 게시물을 호출 할 때이 오류가 발생했습니다. 비록 내 action 속성이이 action = "javascript : //;"처럼 보이지만

    정보에 대한 나는 action 속성을 제거하고 아약스 게시물을 호출 할 때이 오류가 발생했습니다. 비록 내 action 속성이이 action = "javascript : //;"처럼 보이지만

    나는 아약스 호출 및 양식 직렬화에서 그것을 가지고 생각하지만 폼에 더미 작업 특성을 다시 추가하고 작동했습니다.

  7. from https://stackoverflow.com/questions/15699350/spring-request-method-post-not-supported by cc-by-sa and MIT license