2

私は次の行に沿って何かをしたいと思います:

def findUser[ A ]( bp: BodyParser[ A ] )( id: Int )( f: User => Action[ A ] => Result )
def findProfile[ A ]( bp: BodyParser[ A ] )( id: Int )( f: Profile => Action[ A ] => Result )

2 つ (およびそれ以上) を同じ意味で使用できる場合、または次のように使用できます。

def create = findUser( parse.json ) { user => findProfile( parse.json ) { profile => implicit request => ...

私が抱えている2つの問題は、parse.jsonに関係しています(アクションでボディパーサーとしてJsValueを渡し、署名から削除することで修正できると思います..そして、これらのアクションの1つ以上を使用できること自由に...何かアイデアはありますか?

ありがとうございました!

アップデート

回答を回答コメントに移動しました...

4

1 に答える 1

1

次の署名で動作させることができました。これはリファクタリングされたボディ パーサーです... これらのヘルパー関数 (bodyParser、findUser、findProfile) をトレイトに配置し、コントローラーを拡張することができます... シグネチャからボディ パーサーを完全に削除し、パースを渡すこともできます。アクションで json を使用し、findUser( )( id ) の代わりに findUser( id ) を生成します。

val bodyParser = parse.json //(I had to include the entire path to it...)
def findUser[ A ]( bp: BodyParser[ A ] = bodyParser )( id: Int )( f: User => Request[ A ] => Result )

def find( id: Int ) =
    IsLoggedIn( ) {
        findUser( )( id ) {
        user =>
        findProfile( )( user.id ){
            profile =>
            request =>
                Ok( toJson( profile ) )
} } }

きれいな方法をご存知でしたら教えてください。

于 2012-04-10T18:17:34.207 に答える