2016-09-22 5 views
0

@RequestMapping(method = RequestMethod.POST)アノテーションを使用してコントローラクラスにメソッドを追加しているときに問題が発生しました。問題は、このメソッドを追加してアプリケーションを起動するときです。アプリケーションがリソースを読み込めません(css、JSなど)。 リソースを読み込めませんでした:サーバは405(Method Not Allowed)の状態で応答しました と実行ログに私はこのメッセージを受け取ります: org.springframework.web.servlet.PageNotFound handleHttpRequestMethodNotSupported 警告:リクエストメソッド 'GET'はサポートされていませんリソースのロードに失敗しました:サーバーは405というステータスで応答しました。 Spring MVC

このメソッドをコントローラクラスから削除すると、すべて正常に動作します。これはなぜ起こっているのか分かりません。 Dispatcherサーブレットマッピングのコンフィグレーションやリソースとは関係ありません。なぜなら、このメソッドを使用しないと、すべて正常に動作するからです。

ビジネス上の要件があるため、この方法を使用する必要があります。それ以外の場合は不可能です。

問題がどこにあるのかを特定するのに役立つことがあります。

@Controller 
public class InvoiceController 
{ 
    @RequestMapping(value = "/index", method = RequestMethod.GET) 
    public ModelAndView adminPage() { 
     String username; 
     Authentication auth = SecurityContextHolder.getContext().getAuthentication(); 
     username = auth.getName(); //get logged in username 
     username.toUpperCase(); 
     // Logic to build menue based on the Role of the user. 
     HashMap hm = new HashMap(); 
     OrderItems od = new OrderItems(); 
     ModelAndView model = new ModelAndView(); 
     model.addObject("usr", username); 
     //Set the object for Menue Links on the Page 
     model.addObject("mnue", hm); 
     model.setViewName("index"); 
     model.addObject("odi",od); 
     return model; 

    } 

    @RequestMapping(method = RequestMethod.POST) 
    public String save(HttpServletRequest request, 
          HttpServletResponse response, 
          Model model) 
    { 
     System.out.println("Im here in Genaric Post Method"); 
     return null; 
    } 
} 

また、私はSpring Securityの設定を使用しています。セキュリティとは何か関係はありますか?または、コントローラクラスの設定に問題があります。

ご迷惑をおかけして申し訳ありません。

よろしく、

Dカムラン

答えて

0

は、POSTメソッドを持っていない方法とコントローラクラスの両方としてすべてのパスにマッピングされた宣言しているため、この問題が発生したマッピング

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

を要求するエンドポイントURL値を追加します。その値は

+0

です。/indexは完全に正常に動作しています。問題はもう一つの方法だけです。他のメソッドを削除すると、うまく動作します。他の方法の問題は何ですか? –

+0

あなたは私の答えを正しく読まなかったようです。 RequestMapping value属性のないControllerクラスとメソッドを宣言すると、springはすべてのパスをこのクラスとメソッドにマップします。 GETメソッドに "/ index"を追加しました。 POSTメソッドに "/ index"または他の値を追加してください –

+0

あなたのポイントを得ました。問題は、特定のパスにバインドしてはいけない汎用メソッドが必要なことです。理由私は、複数ステップのウィザードスタイルのアプリケーションを作成したいと思います。ページの各ポストコールで、このメソッド内でロジックを追加してリクエストを処理します。私たちができることは何ですか? –

関連する問題