0

次のような2つのアクションを持つコントローラーがあります。

@Controller
@RequestMapping("xyzlogin")
public class XyzloginController 
{
  @RequestMapping(method = RequestMethod.GET)
    public ModelAndView showForm(HttpServletRequest request, ModelMap model) 
    {
         //.... do something....
    }

  @RequestMapping(value = "/requestXYZ", method = RequestMethod.GET)
    public ModelAndView requestXYZ(HttpServletRequest request, ModelMap model) 
    {
         //.... do something with parameter param1.
    }    
}

ビュー ファイルでは、このコントローラーでアクションを要求する次の方法があります。

<a href="requestXYZ?param1=abc">Click me to call requestXYZ action</a>

上記の例で説明したように、ハイパーリンクをクリックして requestXYZ アクションを呼び出したいのですが、代わりに、マッピングが見つからないという 404 エラーが発生します。

マッピングを間違って定義していますか? 正しいマッピングは何ですか?

ありがとう、

4

1 に答える 1

3

属性に絶対パスではない (つまり で始まらない/) パスがhrefある場合、ブラウザはそれを現在のコンテキストに追加します。たとえば、現在 にいる場合はlocalhost:8080/yourapp

<a href="requestXYZ?param1=abc">Click me to call requestXYZ action</a>

あなたを送ります

localhost:8080/yourapp/requestXYZ?param1=abc

あなたの場合、あなたはオンです

localhost:8080/authenticate/authorize/login?param1=abc

リンクをクリックすると

localhost:8080/authenticate/authorize/requestXYZ?param1=abc

明らかに(ほとんど)存在しません。

文字列にリード/を提供hrefして、ブラウザがホスト アドレスから URL を構築するようにすることができます。

アプリケーションコンテキストルートからパスを構築する必要があります

<a href='<c:url value="/xyzlogin/requestXYZ?param1=abc" />'>Click me to call requestXYZ action</a>

タグ ライブラリcはどこにありますか。core上記は作成します

localhost:8080/yourcontextroot/xyzlogin/requestXYZ?param1=abc

Spring には、これに対する独自のタグもあります。

于 2013-09-09T19:55:33.893 に答える