Spring,Request methode ‘POST’ niet ondersteund [closed]

Allereerst verontschuldig je je voor deze herhaalde vraag..

Eigenlijk heb ik in mijn voorjaarstoepassing user.jsp en professional.jsp

hier is mijn User.jsp:

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

En hier is mijn 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>

En hier is mijn Controller-klasse:

    @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";
    }
}

Problem is wanneer we op de knop Add klikken in professional.jsp, er is geen reactie in de serverconsole, maar het onderstaande waarschuwingsbericht wordt weergegeven:

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

Waarom komt deze waarschuwing? ik ben al gespecificeerd method=”POST”..

Help alstublieft..


Antwoord 1, autoriteit 100%

Uw gebruiker.jsp:

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

In je controllerklasse:

(maak het als een betekenisvolle naam van de methode..Hoor ik denk dat je een record in de database plaatst.)

@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";
    }

Antwoord 2, autoriteit 97%

Ik had csrf ingeschakeld in mijn sprint security xml-bestand, dus ik heb slechts één regel in het formulier toegevoegd:

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

Op deze manier kon ik het formulier met het kenmerk model indienen.


Antwoord 3, autoriteit 99%

In Jsp:

action="profile/proffiesional"

In-controller

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

Spelling MisMatch!


Antwoord 4, autoriteit 50%

U bent missimg @ModelAttribute annotatie voor UserProfessionalForm professionalForm parameter in forgotPassword methode.

@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";
}

Antwoord 5, autoriteit 17%

Probeer dit

@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";
    }

Antwoord 6, autoriteit 17%

Ter informatie heb ik het actiekenmerk verwijderd en ik kreeg deze foutmelding toen ik een ajax-bericht aanroep..Ook al ziet mijn actiekenmerk in het formulier er zo uit action="javascript://;"

Ik dacht dat ik het had van de ajax-aanroep en het serialiseren van het formulier, maar ik voegde het dummy-actiekenmerk weer aan het formulier toe en het werkte.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

1 × 2 =

Other episodes