8
votes

Portail Spring de Liferay @ResourCemapping ne peut pas déclencher différents types de méthodes HTTP

J'ai créé une application de portlet de perte de vie en utilisant printemps , thymeleaf et angularjs . Pour la communication entre angularjs et le ressort, j'ai besoin de créer des appels de repos que j'ai créés à l'aide de @ResourCemapping comme indiqué ci-dessous. L'application fonctionne bien, mais le problème est que je ne sais pas comment faire obtenir , Supprimer , mettre http reste < / code> appels depuis @ResourCémappe ne permet pas de spécifier aucune méthode. xxx

lorsque j'ai utilisé @RequestMapping au lieu de @ResourCemapping comme indiqué ci-dessous xxx

J'ai xxx p> peut-on me dire une certaine solution Pour cela

  1. Comment créer différents types d'appels HTTP à l'aide de @restinMapping
  2. pouvons-nous utiliser @RequestMapping au lieu de @ResourCémappe dans Portlet Spring de Liferay pour REST Appels
  3. Comment créer des ressources basées sur des ressources URL comme GetUser / 12 / Mumbai
  4. Comment pouvons-nous envoyer repos JSON comme corps au lieu de la demande Param

8 commentaires

Eh bien avez-vous résolu votre problème? Et si oui qu'est-ce que tu as fait?


@Christosbazioiotis quand j'ai essayé avec @ DemandeMappe, j'ai obtenu org.springframework.beansceptionException: erreur création de haricot avec nom 'org.springframework.web.portlet.mvc.annotation.defultannot ationhandlermapping': L'initialisation de la bean a échoué; Exception imbriquée est java.lang.illegalStateException: conflit de mappages en mode entre le niveau et le type de type: [GetUserDetail] Versus [Vue]


@Christosbaziotiotis Dois-je utiliser une configuration supplémentaire pour utiliser @RequestMapping


@Christosbazioiotis comme Tomáš Piňos a déclaré que j'ai créé une classe de contrôleur distincte et annotataned comme @Controller et avez créé une fonction @RequestMapping comme ci-dessus, je reçois maintenant 404


S'il vous plaît dites-moi la 1) URL complète que vous avez utilisée avant et 2) la valeur @RequestMappage que vous utilisez maintenant. Le @RequestMapping doit avoir placé le point final dans une URL différente. Par exemple, si vous avez déjà utilisé localhost: 12345 / API / APIMUIGHATHIX QUE , peut-être que le point final est sous localhost: 12345 / grossité ou le contraire.


@Christosbazioiotis L'URL que j'ai utilisé pour accéder auparavant lorsque j'ai utilisé @ResourCémappe est http: // localhost: 8082 / Web / invité / invité / welck? P_p_id = fileProcesseur portlet_war_fil% e2% 8 0% A6E = Vue & p_p_cache capacité = Cachelevelpa ge & p_p_col_id = colonne -1 & p_p_col_count = 3 & p _p_resource_id = userd etail et userid = 1 . Maintenant, j'ai mes cours de contrôleur comme SamplerestfullController.java et j'ai essayé de l'appeler comme http: // localhost: 8082 / Processor-Portlet / Services / Auth / U ser Mais a obtenu 404


Cochez sous http: // localhost: 8082 / auth / utilisateur ou http: // localhost: 8082 / processeur-processeur-portlet / auth / utilisateur ou http : // localhost: 8082 / Services / Auth / utilisateur . Je ne sais pas comment vous avez configuré votre application.


Laissez-nous Continuez cette discussion en chat .


4 Réponses :


2
votes
3. How can we create resource based REST urls like getUser/12/mumbai

@RequestMapping(value="getUser/{userId}/mumbai", method=RequestMethod.GET)
@ResponseBody
public List<String> userDetail(@RequestParam("userId") long userId) throws Exception {
    System.out.println("Got detail request for user with id {} "+ userId);

    //UserDetail userDetail = this.userService.getPortalUserDetail(userId);
    List<String> users = new ArrayList<String>();
    users.add("Manu");
    users.add("Lissie");
    users.add("John");

    return users;
}

4. How can we send REST json as body instead of Request Param

    You can use @RequestBody

    @RequestMapping(value="saveUser/{userId}", method=RequestMethod.GET)
    @ResponseStatus(HttpStatus.CREATED)
    public void userDetail(@RequestParam("userId") long userId, @RequestBody User user) throws Exception {
        // Logic
    }

4 commentaires

Quand j'ai essayé avec @ demandage, j'ai obtenu org.springframework.beans.beansception: erreur création de haricot avec nom 'org.springframework.web.portlet.mvc.notation.defaulnot ationhandlermapping': initialisation de la bean a échoué ; Exception imbriquée est java.lang.illegalStateException: conflit de mappages en mode entre le niveau et le type de type: [GetUserDetail] Versus [Vue]


Avez-vous des mappages en double? S'il vous plaît montrer votre code complet.


@shakin pouvez-vous me dire votre adresse e-mail


@shakin aucune idée à ce sujet, j'espère que vous avez vu mon code



2
votes

Comment créer différents types d'appels HTTP à l'aide de @ResourCémappe

Voici quelques exemples qui peuvent vous aider, c'est comment j'utilise @RequestMapping code>: p> xxx Pré>

au lieu de requiermethod.get code> Vous pouvez utiliser requiermethod.post code>, demandemethod.put code>, requestmethod.delete code> et ainsi de suite ... p>

Comment pouvons-nous envoyer le reste JSON comme corps au lieu de la demande Param h2>

Voici un extrait de code que j'utilise actuellement avec une façade angularjs pour l'enregistrement de l'utilisateur . Cela fonctionne simplement et j'utilise @RequestMapping: p> xxx pré>

afin de Consume JSON Vous faites: P>

public ResponseEntity<userDetail > (...


0 commentaires

3
votes

Mapping Mappings Conflit Strong> Exception

La question ne le montre pas, mais votre contrôleur a probablement @RequestMapping ("Vue") code> Annotation. Ce mappage de niveau de type est en conflit avec les mappages de niveau de la méthode. Vous devez supprimer @RequestMapping CODE> Annotation sur la classe du contrôleur. P>

Demande de mapping Exemples strong> P>

@Controller
public class SampleRESTFullController {

// Simple GET
@RequestMapping(value = "/helloSample", method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
public @ResponseBody List<HelloSample> helloSample() { ... }

// GET with path variable
@RequestMapping(value = "/helloSample/sampleId/{sampleId}", method = RequestMethod.GET)
public @ResponseBody HelloSample helloSample(@PathVariable("sampleId") Long sampleId) { ... }

// POST with @RequestBody
@RequestMapping(value = "/helloSample", method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
public @ResponseBody HelloSample createSample(@RequestBody HelloSample helloSample) { ... }

// PUT with path variable and @RequestBody
@RequestMapping(value = "/helloSample/sampleId/{sampleId}", method = RequestMethod.PUT)
@ResponseStatus(HttpStatus.NO_CONTENT)
void update(@PathVariable("sampleId") long sampleId, @RequestBody HelloSample helloSample) { ... }

// DELETE
@RequestMapping(value = "/helloSample/sampleId/{sampleId}", method = RequestMethod.DELETE)
@ResponseStatus(HttpStatus.NO_CONTENT)
void delete(@PathVariable("sampleId") long sampleId) { ... }

}


2 commentaires

@Tomaspinos j'ai créé une classe de contrôleur distincte et Annotatated comme @Controller et avez créé une fonction @RequestMapping comme ci-dessus, je reçois maintenant 404


Pouvez-vous venir faire une conversation sur Chat.Stackoverflow .Com / Chambres / 93360 / ...



2
votes

Il y a des méthodes suivantes pour utiliser l'application de repos avec JS angulaire P> xxx pré>

et utiliser après JavaScript pour communiquer avec le contrôleur de ressort p> blockQuote>

p>

var formData = {
				"userName" : 'Vasim',
				"password" : '123456',
				"roleName" : 'Admin'
			};
			var response = $http.post('add', formData);
			response.success(function(data, status, headers, config) {
				$scope.message = data;
			});
var formData = {
				"userName" : 'Vasim',
				"password" : '123456',
				"roleName" : 'Admin'
			};
			var response = $http.put('edit', formData);
			response.success(function(data, status, headers, config) {
				$scope.message = data;
			});
$scope.delete= function(employeeId) {
			$http['delete']('delete', {
				params : {
					'employeeId' : employeeId
				}
			}).

			success(function(data) {

				$scope.msg = data;
	
			});
 $http.get('get',{params:{
 'id':id
 }
                 }).success(function(data) {

			$scope.employees = data;


2 commentaires

Boot @RequestMapping ne fonctionne pas


iamvasim786@gmail.com