26

まず最初に、この度重なる質問についてお詫び申し上げます..

実際、私の春のアプリケーションではuser.jspprofessional.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";
    }
}

ProblemAddのボタンをクリックするprofessional.jspと、サーバー コンソールに応答がありませんが、以下の警告メッセージが表示されます。

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

なぜこの警告が来るのですか? 私はすでに method="POST" を指定しています..

助けてください..

4

6 に答える 6

15

スプリント セキュリティ xml ファイルで csrf を有効にしたので、フォームに 1 行追加しただけです。

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

このようにして、model属性を持つフォームを送信できました。

于 2016-03-28T19:50:00.360 に答える
8

あなたの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";

    }
于 2013-03-29T08:57:06.600 に答える
8

Jsp では:

action="profile/proffiesional"

コントローラー内

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

スペルミスマッチ!

于 2013-03-29T07:53:37.213 に答える
4

メソッド内のパラメーターの@ModelAttribute注釈がありません。UserProfessionalForm professionalFormforgotPassword

@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";
}
于 2013-03-29T07:48:52.123 に答える
1

これを試して

@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";
    }
于 2013-03-29T09:44:48.367 に答える
1

詳細については、アクション属性を削除しましたが、ajax 投稿を呼び出すとこのエラーが発生しました。フォームのアクション属性は次のように見えますがaction="javascript://;"

私はajax呼び出しとフォームのシリアル化からそれを持っていると思っていましたが、ダミーのアクション属性をフォームに再度追加したところ、うまくいきました。

于 2013-12-20T07:31:13.377 に答える