0

いくつかのパラメーターを使用して、コントローラーに POST 要求を別のコントローラーに転送させようとしています。

@Controller
@RequestMapping("/register")
public class RegisterController {
    //...
    @RequestMapping(method=RequestMethod.POST)
    public String processSubmit(@Valid Voter voter, BindingResult result, HttpServletRequest request) {
          //...
          request.setAttribute("firstName", voter.getFirstName());
          request.setAttribute("lastName", voter.getLastName());
          request.setAttribute("ssn", voter.getSsn());
          logger.info("VoterID exists, returning redirect:/question/prepare");
          return "forward:/question/get";
        }
}

@Controller
@RequestMapping("/question")
public class QuestionController {
    //...
    @RequestMapping(value="/get", method=RequestMethod.GET)
    public String prepareVoterBean(@RequestParam String firstName, 
            @RequestParam String lastName, @RequestParam String ssn, Model model) {
        logger.info("QuestionController got GET REQUEST for " + firstName + lastName + ssn);
        VoterBean bean = new VoterBean();
        bean.setFirstName(firstName);
        bean.setLastName(lastName);
        bean.setSsn(ssn);
        model.addAttribute("questions",bean);
        return "questionPage";
    }
}

processSubmit() から受け取ったパラメーターを使用して新しいモデルを作成するように QuestionController をコーディングしようとしています。問題は、processSubmit から:/question/get を返すと、リクエストが HTTP POST リクエストとして転送され、サーバーが HTTP ステータス 405 - "Request method 'POST' not supported. In order to build a new model QuestionController 内で、processSubmit() から HTTP GET リクエストを転送する必要があると思います。

Spring Web MVC フレームワークのドキュメントについて調査し、リダイレクト プレフィックスを使用して POST メソッドからの GET リクエストとしてリクエストを転送できることを読みましたが、リダイレクト プレフィックス (つまりreturn redirect:/question/get) を試したところ、サーバーは HTTP 400 - The request sent byクライアントの構文が正しくありませんでした。私は何を間違っていますか?

前もって感謝します。

4

2 に答える 2

0

それをしないでください。

ヘルパー メソッドで両方のコントローラー メソッド間の共通部分を取り出し、両方のコントローラー メソッドからこのヘルパー メソッドを呼び出します。

于 2013-04-03T16:43:42.927 に答える