0

再生1.2.4モルヒネ1.2.6a

私は、あまりにも多くの日数にわたって、いくつかの異なる方法でレコードを更新しようとしました。私は数冊の本を読み、Playに関するほぼすべてのコメントを確認しましたが、それでもこれを理解することはできません。???

モデル

@Entity
public class MyModel extends Model{
   public String fullname;
   public String email;
}

ルート

PUT /test1/? Application.Update1(format:'json')
PUT /test2/? Application.Update2(format:'json')
PUT /test3/? Application.Update2(format:'json')

コントローラー

public static void Update1(MyModel mydata){
}

public static void Update2(JsonObject json){
}

public static void Update3(@Valid MyModel mydata){
}

送信

PUT
Content-Type: application/json
Accept: application/json
{ "id": "4fa932fa036494e78debbc14",
  "fullname" : "test"
}

Update1、Update2、およびUpdate3を呼び出すと、すべて例外が報告されて終了します。

更新を呼び出す1:

Oops: RuntimeException
An unexpected error occured caused by exception RuntimeException: play.exceptions.UnexpectedException: Unexpected Error

play.exceptions.UnexpectedException: Unexpected Error
    at play.mvc.ActionInvoker.invoke(ActionInvoker.java:258)
    at Invocation.HTTP Request(Play!)
Caused by: java.lang.RuntimeException: play.exceptions.UnexpectedException: Unexpected Error
    at play.modules.morphia.Model.create(Model.java:73)

UPDATE2を呼び出す:

NullPointerException occured : null

play.exceptions.JavaExecutionException
    at play.mvc.ActionInvoker.invoke(ActionInvoker.java:231)
    at Invocation.HTTP Request(Play!)
Caused by: java.lang.NullPointerException
    at controllers.ApplicationController.Update2(ApplicationController.java:49)
    at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:548)
    at play.mvc.ActionInvoker.invoke(ActionInvoker.java:502)
    at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:478)
    at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:473)
    at play.mvc.ActionInvoker.invoke(ActionInvoker.java:161)

更新3:

Oops: RuntimeException
An unexpected error occured caused by exception RuntimeException: play.exceptions.UnexpectedException: Unexpected Error

play.exceptions.UnexpectedException: Unexpected Error
    at play.data.validation.ValidationPlugin.beforeActionInvocation(ValidationPlugin.java:59)
    at play.plugins.PluginCollection.beforeActionInvocation(PluginCollection.java:594)
    at play.mvc.ActionInvoker.invoke(ActionInvoker.java:134)
    at Invocation.HTTP Request(Play!)
Caused by: java.lang.RuntimeException: play.exceptions.UnexpectedException: Unexpected Error
    at play.modules.morphia.Model.create(Model.java:73)
    at play.modules.morphia.MorphiaPlugin.bind(MorphiaPlugin.java:601)
    at play.PlayPlugin.bind(PlayPlugin.java:68)
    at play.plugins.PluginCollection.bind(PluginCollec

ヘルプ?

4

1 に答える 1

3

これは、モルヒネの問題というよりも、JSONバインディングに関するものだと思います。AFAIK、play1.xはJSON自動バインドをサポートしていません。したがって、おそらく必要なのは次のとおりです。

public static void Update(String myData){
   MyModel model = new Gson().fromJSON(myData, MyModel.class);
   ...
}

クライアント側では、「myData」という名前のajaxメッセージを送信する必要があります。

$.post("the/url", {myData: {...}}, function(response){...});
于 2012-05-15T20:15:55.980 に答える