liveray Spring Portal @ResourceMapping kann nicht verschiedene Arten von HTTP-Methoden auslösen

8

Ich habe mit Spring , thymeleleaf und AngularJS eine Portletanwendung für liferay erstellt. Für die Kommunikation zwischen AngularJS und Spring muss ich einige Ruheaufrufe erstellen, die ich mit @ResourceMapping like wie unten gezeigt erstellt habe. Die Anwendung funktioniert gut, aber das Problem ist, dass ich nicht weiß, wie GET , DELETE , PUT http REST ruft, da @ResourceMapping keine Methoden angeben kann.

%Vor%

Wenn ich @RequestMapping anstelle von @ResourceMapping verwendet habe, wie unten gezeigt

%Vor%

Ich habe org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.portlet.mvc.annotation.DefaultAnnotationHandlerMapping': Initialization of bean failed; nested exception is java.lang.IllegalStateException: Mode mappings conflict between method and type level: [getUserDetail] versus [view]

Kann mir bitte jemand eine Lösung dafür geben

  1. So erstellen Sie verschiedene Arten von http-Anrufen mit @ResourceMapping
  2. Können wir @RequestMapping anstelle von @ResourceMapping im Liferay Spring Portlet für REST Aufrufe
  3. verwenden
  4. Wie können wir Ressourcenbasierte REST URLs wie getUser/12/mumbai erstellen?
  5. Wie können wir REST json als Body anstelle von Request Param
  6. senden
Alex Man 16.10.2015, 09:52
quelle

4 Antworten

2
%Vor%

Wenn Sie eine REST API mit vollständigen Aktionen (GET, POST, PUT, DELETE) haben wollen, müssen Sie @RequestMapping verwenden.

%Vor%

Sie sollten verwenden können.

%Vor%     
shazin 19.10.2015 08:43
quelle
2

Moduszuordnungen stehen in Konflikt Ausnahme

Die Frage zeigt es nicht, aber Ihr Controller hat wahrscheinlich @RequestMapping("view") Annotation. Diese Zuordnung auf Typenebene steht in Konflikt mit den Zuordnungen auf Methodenebene. Sie sollten @RequestMapping Annotation für die Controller-Klasse entfernen.

Anforderungsabbildungsbeispiele

%Vor%

Ich habe die Beispiele aus verwendet RESTFul Dienste mit Liferay Blogbeitrag. Es beantwortet alle Ihre Fragen und präsentiert viele Beispiele. Achten Sie auf die Spring-Konfiguration, die die REST-fähigen Dienste ermöglicht (insbesondere den View Resolver und den Nachrichtenkonverter).

    
Tomas Pinos 20.10.2015 13:09
quelle
2

So erstellen Sie verschiedene Arten von http-Aufrufen mit @ResourceMapping

Hier sind einige Beispiele, die Ihnen helfen können. So verwende ich @RequestMapping :

%Vor%

Anstelle von RequestMethod.GET können Sie RequestMethod.POST , RequestMethod.PUT , RequestMethod.DELETE usw. verwenden ...

Wie können wir REST json als Body anstelle von Request Param

senden

Hier ist ein Code-Snippet, das ich momentan mit einem AngularJS Frontend zur Benutzerregistrierung verwende. Es funktioniert gut und ich benutze @RequestMapping:

%Vor%

Um konsumiere JSON , was du tust:

%Vor%

Um produzieren (zurückgeben) JSON Sie tun:

%Vor%

Auch wenn Sie Spring verwenden, denke ich, dass Sie sich Spring Data und Spring Data Rest . Auf diese Weise können Sie Ihre Geschäftsmodelle als REST-konforme Endpunkte verfügbar machen.

Wie können wir ressourcenbasierte REST-URLs wie getUser / 12 / mumbai

erstellen?

Um diesen Endpunkt getUser/12/mumbai verfügbar zu machen, sollten Sie Folgendes tun:

%Vor%

Schließlich können Sie bitte versuchen,

zu ändern %Vor%

zu diesem

%Vor%     
Christos Baziotis 20.10.2015 12:12
quelle
2
  

Es gibt folgende Methoden, um die rest app mit angular js

zu verwenden
%Vor%
  

und verwenden Sie folgendes JavaScript, um mit dem Federcontroller zu kommunizieren

%Vor%
    
Vasim Akram 23.10.2015 18:05
quelle