2016-11-15 2 views
0

J'essaie de voir combien de travail sera impliqué si nous migrons notre application web Struts 1.x vers AngularJS + Java RESTful Web Service. (Je sais que Struts 1.x ne correspond pas bien avec AngularJS.)Réponse JSON pour Struts1 ActionForm

La première chose que je remarque est qu'il y a tellement de Struts ActionForm et je me demandais s'il y avait un moyen plus simple d'obtenir une réponse dans JSON format. Nous avons donc la classe apprecier:

public class Note extends org.apache.struts.action.ActionForm{ 

//setter and getter... 
} 

J'ai essayé de convertir en classe de style POJO et tant d'autres changements sont nécessaires pour Dão, aide, classes utilitaires aussi bien. Est-ce quelque chose d'inévitable? Ou vaut-il mieux migrer vers Struts 2 d'abord et ensuite essayer d'adopter AngularJS?

D'ailleurs, je reçois cette erreur console éclipse quand j'ai essayé d'obtenir une réponse:

org.codehaus.jackson.map.JsonMappingException: Aucun sérialiseur trouvé pour la classe org.apache.struts.action .ActionServletWrapper et aucune propriété pour créer BeanSerializer découvert (pour éviter exception, désactivez SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS)) (par la chaîne de référence: org.kki.dao.oracle.ads.TranscribedNote [ "ServletWrapper"])

Mise à jour:

@Path("/note") 
public class NoteRestService { 


@Context 
private HttpServletRequest request; 

@GET 
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) 
public Note [] getNote() { 

    HttpSession session = request.getSession(); 
    User user = (User) session.getAttribute("user"); 
    NoteDAO noteDao = new NoteDAO(null); 
    Note[] note = noteDao.selectNote(user.getUserId()); 

    return note; 
} 
} 

=========

myApp.controller('noteCtrl', ['$scope', 'Note', 

    function ($scope, Note) { 

var vm = this; 
$scope.noteLists = Note.query(function(){ 

    vm.noteList = $scope.noteLists; 
}); 

================

myApp.factory('Note', ['$resource', 
function($resource) { 

    return $resource('http://localhost:8080/angular_demo/rest/note/:id', {id: '@id'}, { 

     get: {method: 'GET', cache: false, isArray: false} 

    }); 

}]); 
+0

Comment avez-vous renvoyé la réponse au format json? –

+0

Je viens d'éditer ma question originale. – Daniel

+0

La réponse ci-dessous. –

Répondre

0

Vous obtenez des erreurs parce que Note objet s'étend ActionForm. Vous avez donc des propriétés héritées qui ne doivent pas être sérialisées. Supprimez simplement la dépendance de la classe Note

public class Note { 

//setter and getter... 
}