3

私はスカラコントローラを持っています:

@Controller
@RequestMapping(Array("/welcome"))
class HelloController{

  @RequestMapping{val method = Array(RequestMethod.GET)}
  def printWelcome(model: ModelMap) = {
    println("IN: printWelcome(..)")
    val greeting = new GreetingBean("Yo!", "Adam")
    model.addAttribute("message", greeting);
    "secure" // sends to the /jsf/secure.xhtml page
  }

  @RequestMapping{val value = Array("/greeting"), val method = Array(RequestMethod.GET)}
  def greeting(model: ModelMap) = {
    println("IN: greeting(..)")
    val greeting = new GreetingBean("Greetings", "Davies")
    model.addAttribute("greeting", greeting);
    "greeting"; // sends to the /jsf/greeting.xhtml page
  }
}

メッセージを呼び出すと、コンソールにhttp://localhost:8080/jsf-spring-guice/welcomeメッセージIN: printWelcome(..)が表示され、正しいページに移動します。

私が呼び出すhttp://localhost:8080/jsf-spring-guice/welcome/greetingと、404エラーが発生します。

私はさまざまな方法でグリーティングメソッドで @RequestMapping を指定しようとしました:

@RequestMapping{val value = Array("greeting"), val method = Array(RequestMethod.GET)}
@RequestMapping{val value = Array("/greeting")}
@RequestMapping(Array("/greeting"))
@RequestMapping(Array("/greeting"), Array(RequestMethod.GET))

常に正常に見える生成されたクラスを逆コンパイルしました。しかし、私はいつも歓迎でOKになり、/welcome/greetingでいつも202になります

逆コンパイルされた Scala クラスには次のものがあります。

@RequestMapping({"/welcome"})

この:

@RequestMapping(value={"/greeting"}, method={org.springframework.web.bind.annotation.RequestMethod.GET})

これが機能しない理由がわかりません。誰でも助けることができますか?

4

2 に答える 2

0

チェックしてコンパイルしていませんが、メソッド@RequestMappingのアノテーションにprintWelcomeは、空 ("") であっても値を指定する必要があります。

指定された値はフィルターとして機能し、それが問題の原因である可能性があります。

于 2013-01-20T12:25:58.963 に答える
0

解決済み ...しかし、Spring のドキュメントで答えが見つかりませんでした。

私がいた状況web.xml

<servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/welcome/*</url-pattern>
</servlet-mapping>

これは、マッピング '@RequestMapping(Array("/welcome"))' は効果がなく、 へのリクエストhttp://localhost:8080/jsf-spring-guice/welcomeは でマークされたメソッドによって処理されることを意味していました@RequestMapping{val method = Array(RequestMethod.GET)}。デフォルトの一種get

手がかりは、私が入ったときに でhttp://localhost:8080/jsf-spring-guice/welcome/welcome/greeting/マークされたメソッド@RequestMapping{val value = Array("/greeting"), val method = Array(RequestMethod.GET)}が呼び出されたことです。この時点で、ダブルwelcomeが何かが間違っていることを意味していることは明らかでした。

基本的に、 はurl-patternURL パターンのプレフィックスとして機能しますが (それは誰もが知っています)、単純な GET メソッドを持つコントローラーがデフォルトとして機能するという問題があります。

と同じリクエストマッピングを持つコントローラーを使用しないでくださいurl-pattern

于 2013-01-20T16:06:24.780 に答える