2012-10-05 9 views
6

私は以下の例外がスローされる理由を解決しようとしています。NoHandlerFoundExceptionの 'parameters map'はどこに設定されていますか?

ポートレットが 'ビュー'モードでアクセスされたためだと思いますが、春のサーブレットコンテナが要求を処理できなかったことがわかりませんが、これは正しいですか?

下記の 'parameters map'はどこに設定されていますか?

org.springframework.web.portlet.NoHandlerFoundException:ポートレット要求が見つかりません一致 ハンドラメソッド:モード 'ビュー'、位相 'ACTION_PHASE' は、ここで地図[空]

あるパラメータコントローラ:物事の

@Controller 
@RequestMapping("VIEW") 
public class DetailsController { 
    @RequestMapping("VIEW") 
    public String showDetails(final ModelMap modelMap, final RenderRequest renderRequest) { 
     return "allDetails/details"; 
    } 
} 
+0

は、あなたが何をすべきか、JSPたくさん –

+0

@Jerome Dalbertに役立つだろう"allDetails/details"にリダイレクトするものを見たいですか? –

+0

コントローラーを呼び出すJSP(または何でも)の部分 –

答えて

6

ここに私が思いつくことができる3つのアイデアがあります(コントローラーがどのように呼び出されているかを知ることができます)。 その1つ、またはそれらの組み合わせを試して、それが機能しているかどうか教えてください。

アイデア1: showDetails @RequestMapping注釈の場合は("VIEW")を削除してください。 <portlet:actionURL/>:あなたの呼び出しJSPはこのような何かを持っている場合

... 
public class DetailsController { 

    @RequestMapping 
    public String showDetails(final ModelMap modelMap, final RenderRequest renderRequest) { 
     return "allDetails/details"; 
    } 

} 

これは仕事ができるshowDetailsデフォルトはrenderメソッドをでしょう。

アイデア2: @RequestMappingメソッドアノテーションのアクションパラメータを指定します。

<portlet:actionURL ... > 
    <portlet:param name="action" value="viewDetails"> 
</portlet:actionURL> 

アイデア3:はアクション・フェーズのための空のメソッドを追加し、あなたの呼び出しJSPはこのような何かを持っている場合

... 
public class DetailsController { 

    @RequestMapping(params = "action=viewDetails") 
    public String showDetails(final ModelMap modelMap, final RenderRequest renderRequest) { 
     ... 
    } 

} 

これは仕事ができます。あなたの呼び出しJSPはこのようなものがある場合、これは仕事ができる

... 
public class DetailsController { 

    @RequestMapping(params = "action=viewDetails") // render phase 
    public String showDetails(final ModelMap modelMap, final RenderRequest renderRequest) { 
     ... 
    } 

    ... 
    // Empty method 
    @RequestMapping(params = "action=viewDetails") // action phase 
    public void actionMethod() { 
    } 

} 

:あなたのコントローラのコード(そしておそらくJSPの一部)を示す

<portlet:actionURL ... > 
    <portlet:param name="action" value="viewDetails"> 
</portlet:actionURL> 
+0

コントローラーを呼び出すものがわかりません。ご回答有難うございます –

2

カップルは、まずここをチェックします

  1. jspからコントローラに渡されるパラメータはありますか?
  2. 空のパラメータシナリオを処理するデフォルトのアクションメソッドはありますか?最初の質問への答えはイエスである場合

さて、その後、あなたのJSPは...のような

 <portlet:actionURL var="myAction"> 
      <portlet:param name="paramName" value="paramVal" /> 
     </portlet:actionURL> 
     <form:form action="${myAction}"... 

などコントローラ内の対応するActionMappingを... actionURLタグ何かを持っている必要があり

 @ActionMapping(params = "paramName=paramVal") 
     public void myAction.... 

2番目の質問に対する答えがいいえの場合、コントローラーにデフォルトのアクションメソッドを定義します。

 @ActionMapping(param="!action") 
     public void defaultAction.... 

これは役に立ちます。

関連する問題