2013-09-25 27 views
6

Oyunumda Aksiyon kompozisyonunu kullanıyorum! Şu ana kadar uygulamalar ve iyi çalıştılar. Ancak son 2.2.0 güncellemesiyle artık çalışmıyorlar ve bunları nasıl doğru bir şekilde güncellemeyi bilmiyorum. örneğin bu eylem YaniPlayFramework 2.2 Java Action Bileşimi

:

public class ChatMsgValidation extends Action<ChatMsgValidation.ValidChatMsg> { 

@With(ChatMsgValidation.class) 
@Target({ElementType.TYPE, ElementType.METHOD}) 
@Retention(RetentionPolicy.RUNTIME) 
public @interface ValidChatMsg { 
} 


public Result call(Http.Context ctx) throws Throwable { 

    Utils.debugFunctionCall("ValidChatMsg() " + ctx.toString()); 

    // validate we got the "player" parameter 
    JsonNode jsonRequest = request().body().asJson(); 
    if (!WSUtils.validateJSONField(Constants.JSON_MSG, jsonRequest)) { 
     return badRequest(WSUtils.simpleMissingFieldMsg(Constants.JSON_MSG)); 
    } 

    RequestParser requestParser = new RequestParser(request()); 
    String chatMsg = requestParser.getMessage(); 

    if (chatMsg.isEmpty()) { 
     return badRequest(WSUtils.simpleFailureMsgWithReason(Messages.get("message.cannot.be.empty.error"), FailConstants.REASON_EMPTY)); 
    } 


    if (chatMsg.length() < Constants.MIN_CHAT_MESSAGE_LENGTH) { 
     return badRequest(WSUtils.simpleFailureMsgWithReason(Messages.get("query.lower.limit.error"), FailConstants.REASON_TOO_SHORT)); 
    } 

    if (chatMsg.length() > Constants.MAX_CHAT_MESSAGE_LENGTH) { 
     return badRequest(WSUtils.simpleFailureMsgWithReason(Messages.get("message.too.long.error"), FailConstants.REASON_TOO_LONG)); 
    } 

    return delegate.call(ctx); 
} 
} 

Sorun artık "çağrı" yerine "Sonuç" nin "Promise" dönmelidir yöntem ve bir dönüş için bir yol anlamaya olamaz Bir sürü kod kullanmadan basit JSON mesajı, işe yaramaz kod çünkü sadece Promises sahip olmak için kukla fonksiyonlar yaratıyorum. Göremediğim daha iyi bir yol olmalı, lütfen önerin.

cevap

9

Sorunum için daha iyi bir çözüm buldum. Aşağıdaki gibidir:

return F.Promise.pure((SimpleResult) badRequest(WSUtils.simpleFailureMsgWithReason(Messages.get("message.cannot.be.empty.error"), FailConstants.REASON_EMPTY)));