2015-04-15 2 views
-1

Je suivais le tutoriel Java SQL Adapter pour la plate-forme MobileFirst 7.MobileFirst - Invoquer procédure Java Adaptateur SQL

J'essaie d'obtenir avec l'utilisateur USERID = « bjones », mais je ne sais pas comment régler la les paramètres {userId} dans la procédure /adapters/UserAdapter/{userId}.

function loadUsers(){ 
    busyIndicator.show(); 

    var resourceRequest = new WLResourceRequest("/adapters/UserAdapter/", WLResourceRequest.GET); 
    resourceRequest.setQueryParameter("userId", "bjones"); 
    resourceRequest.send().then(
     loadUsersSuccess, 
     loadUsersFailure 
);} 

function loadUsersSuccess(result){ 
    WL.Logger.debug("Feed retrieve success"); 
    busyIndicator.hide(); 
    WL.Logger.debug(JSON.stringify(result)); 
    if (result.responseJSON.length>0) 
    displayFeeds(result.responseJSON); 
    else 
    loadUsersFailure();} 

function loadUsersFailure(result){ 
    WL.Logger.error("Feed retrieve failure"); 
    busyIndicator.hide(); 
    WL.SimpleDialog.show("Banking Application", "Service not available. Try again later.", 
     [{ 
      text : 'Reload', 
      handler : WL.Client.reloadApp 
     }, 
     { 
      text: 'Close', 
      handler : function() {} 
     }] 
    );} 

Ma demande est

localhost: 10080/JavaAdapters/adaptateurs/UserAdapter/userId = bjones

mais la réponse JSON contient tous les utilisateurs stockés dans ma base de données Image for response

En outre, que diriez-vous du type d'appel REST @PUT, avec Path param "utilisateur Id » et le corps params: « prenom », « lastName », « mot de passe », afin de mettre à jour un utilisateur

Répondre

1

du tutoriel le point final de l'adaptateur est /{userId} qui signifie que le userId n'est pas un param de requête, mais il fait partie de l'url. Vous devez mettre à jour votre fonction loadUsers afin qu'il ajoute le userId à la fin de l'URL, donc dans votre exemple fullpath serez /adapters/UserAdapter/bjones

function loadUsers(){ 
    busyIndicator.show(); 

    var usedId = "bjones"; 

    var resourceRequest = new WLResourceRequest("/adapters/UserAdapter/"+userId, WLResourceRequest.GET); 
    resourceRequest.send().then(loadUsersSuccess,loadUsersFailure); 

} 

MISE À JOUR:

function loadUsersSuccess(result) { 
    WL.Logger.debug("Feed retrieve success"); 
    busyIndicator.hide(); 
    WL.Logger.debug(JSON.stringify(result)); 
    // if responseJSON is not null user data was returned 
    if (result.responseJSON != null) { 
    displayFeeds(result.responseJSON); 
    } else{ 
    loadUsersFailure(); 
    } 
} 
+0

comment définir la fonction loadUsersSuccess, car result.responseJSON.length est indéfini. "responseJSON": {"lastName": "Jones", "userId": "bjones", "firstName": "Brad", "mot de passe": "bjones"} – BraveWolf

+0

vérifier la mise à jour à la réponse. il y a beaucoup d'autres façons de faire cela –

+0

comment se passe le WLResourceRequest.PUT, pour mettre à jour un utilisateur – BraveWolf

1

il y a essentiellement deux types d'URL avec les paramètres: 1. Paramètre de chemin: /adapters/UserAdapter/users/{userId} 2. Paramètre de requête: /adapters/UserAdapter/users? userId = {userId}

adaptateur java avec le paramètre de requête:

@GET 
@Produces("application/json") 
@OAuthSecurity(enabled = false) 
@Path("/users") 

public String getuserById(@QueryParam("userID") String userId) 

{ 
      System.out.println(userId); 
} 

adaptateur java avec le paramètre de chemin:

@GET 
@Produces("application/json") 
@OAuthSecurity(enabled = false) 
@Path("https://stackoverflow.com/users/{userId}") 

public String getuserById(@PathParam("userId") String userId) 

{ 
      System.out.println(userId); 
} 

je l'espère, deuxième exemple répond à votre question dans l'adaptateur java.