2017-10-13 4 views
2

私は、パラメータ「p」が変更されるたびにページが見つかりませんプロンプトする必要が改ページ時に私のWebページurlが変更されたときにプロンプ​​トページが見つかりません。遊びます! +スカラ

http://localhost:9000/employee?p=2 

で次のURLを持っています。例:

http://localhost:9000/employee?b=2 

notFoundを入力するにはコントローラーが必要です。私はこれをどうやってやるのだろう?

参考:

コントローラー:

​​

ルート:

# Employee list (look at the default values for pagination parameters) 
GET  /employee     controllers.Application.list(p:Int ?= 1,l:Int ?= 125) 

答えて

1

あなたのルーティングを変更することにより、全体的なパラメータの名前を切り替えから人々を防ぐことができます。しかし、あなたは次のことを行うことができ、あなたが何をしたいかによって概説あらゆる可能性を、達成するために:

GET  /employee/:p/:l  controllers.Application.list(p:Int ?= 1,l:Int ?= 125) 
    GET  /employee/p/:p   controllers.Application.list(p:Int, 125) 
    GET  /employee/l/:l   controllers.Application.list(1, l:Int) 

それはあなたがテンプレートに呼び出すURLを処理する方法に依存しますが、あなたはその自動生成することができた場合ユーザーがURLを入力しなければデフォルトのパラメータをURLに追加するだけで、最初のURLをそのまま保持することができます。

あなたのコントローラが、今の代わりになります召喚するURL:

http://localhost:9000/employee/p/2 
    http://localhost:9000/employee/l/4 
    http://localhost:9000/employee/2/4 

そして、あなたが見つからないコントローラメソッドに他のルートは何もすることができます:

GET  /employee/--String, empty or whatever else---  controllers.Application.returnNotFound 

@Transactional(readOnly=true) 
public static Result returnNotFound() { 

    return notFound("<h1>Page not found</h1>").as("text/html"); 

} 
+0

どのように私はそれをすることを調整することができます'/ employee/- 文字列、空またはそれ以外のもの---'この文字列、特殊文字または空文を取っていることを知っていますか? – NoobProgrammer

+0

私はこの '/ employee/$ p'のようなregexを使う必要がありますか? – NoobProgrammer

+1

できること:https://www.playframework.com/documentation/2.6.x/ScalaRouting#Dynamic-parts-with-custom-regular-expressions – NateH06

関連する問題