前言
本文主要介紹的是在AngularJS中update兩次出現$promise屬性無法識別的解決方法,下面話不多說,先來看看錯誤提示,然后再看看解決的辦法吧。
一、錯誤信息如下:
ERROR 2015-12-02 14:33:17,653 http-bio-8080-exec-42 o.s.s.r.i.e.InternalErrorExceptionMapper - Unrecognized field "$promise" (class com.inetpsa.fnd.rest.client.ClientRepresentation), not marked as ignorable (6 known properties: "lastName", "address", "telephone", "clientId", "mail", "firstName"]) at [Source: org.apache.catalina.connector.CoyoteInputStream@1b9d797d; line: 1, column: 357] (through reference chain: com.inetpsa.fnd.rest.client.ClientRepresentation["$promise"]) com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "$promise" (class com.inetpsa.fnd.rest.client.ClientRepresentation), not marked as ignorable (6 known properties: "lastName", "address", "telephone", "clientId", "mail", "firstName"]) at [Source: org.apache.catalina.connector.CoyoteInputStream@1b9d797d; line: 1, column: 357] (through reference chain: com.inetpsa.fnd.rest.client.ClientRepresentation["$promise"]) at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:51) ~[jackson-databind-2.4.4.jar:2.4.4] at com.fasterxml.jackson.databind.DeserializationContext.reportUnknownProperty(DeserializationContext.java:744) ~[jackson-databind-2.4.4.jar:2.4.4] at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:915) ~[jackson-databind-2.4.4.jar:2.4.4] at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1306) ~[jackson-databind-2.4.4.jar:2.4.4] at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1284) ~[jackson-databind-2.4.4.jar:2.4.4] at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:243) ~[jackson-databind-2.4.4.jar:2.4.4] at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:118) ~[jackson-databind-2.4.4.jar:2.4.4]
二、問題代碼
Angular 自動會在返回的data數據中帶上$promise屬性。
在進行下面copy時將從data返回的數據copy到當前行用來顯示,這樣在進行update的操作時帶的數據體中就包含了$promise屬性,結果就會出現上述錯誤導致update失敗。
三、更改如下:
// ===============show the update modal dialog ================== $scope.tempRowEntityForUpdate; $scope.openUpdateClientPopup=function(){ $scope.form1.$setSubmitted(true); $scope.tempRowEntityForUpdate = {}; angular.copy($scope.currentSelectedRowEntity, $scope.tempRowEntityForUpdate); angular.element('#UpdateDialog').modal({ backdrop: false }); }; $scope.updateClient=function(){ if($scope.form1.$submitted && $scope.form1.$valid){ Client.update({},$scope.tempRowEntityForUpdate,function(){ angular.copy($scope.tempRowEntityForUpdate,$scope.currentSelectedRowEntity); }); angular.element('#UpdateDialog').modal('hide'); } };
解決辦法:不使用更新后獲得的data數據,而是從當前的行模型中取得數據copy給當前選中的行即可。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
新聞熱點
疑難解答