首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Spring,不支持请求方法'POST‘

Spring,不支持请求方法'POST‘
EN

Stack Overflow用户
提问于 2013-03-29 15:44:34
回答 6查看 209.1K关注 0票数 26

首先说道歉问这个重复的问题..

实际上,在我的spring应用程序中,我有user.jspprofessional.jsp

这是我的User.jsp:

代码语言:javascript
复制
  <form:form action="profile/user" modelAttribute="profile">
    <div>
        <jsp:include page="professional.jsp"></jsp:include>
    </div>

</form:form>

下面是我的professional.jsp:

代码语言:javascript
复制
   <%@ 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类:

代码语言:javascript
复制
    @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是当我们在professional.jsp中单击Add按钮时,服务器控制台中没有响应,但显示了下面的警告消息:

代码语言:javascript
复制
  29 Mar, 2013 1:03:51 PM org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver handleHttpRequestMethodNotSupported
WARNING: Request method 'POST' not supported

为什么会出现这个警告?我已经指定了method="POST"..

请帮帮我..

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-03-29 16:57:07

您的user.jsp:

代码语言:javascript
复制
 <form:form action="profile/proffesional" modelAttribute="PROFESSIONAL">
     ---
     ---
    </form:form>

在您的控制器类中:

(使它成为一个有意义的完整方法name..Hear我想你是在数据库中插入记录。)

代码语言:javascript
复制
@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";

    }
票数 7
EN

Stack Overflow用户

发布于 2016-03-29 03:50:00

我在我的sprint security xml文件中启用了csrf,所以我只在表单中添加了一行:

代码语言:javascript
复制
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" /> 

这样,我就可以提交具有model属性的表单。

票数 15
EN

Stack Overflow用户

发布于 2013-03-29 15:53:37

在Jsp中:

代码语言:javascript
复制
action="profile/proffiesional"

在控制器中

代码语言:javascript
复制
@RequestMapping(value = "proffessional", method = RequestMethod.POST)

拼写MisMatch!

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15699350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档