2009-02-11 3 views
2

Je travaille sur une application Web qui convertit un rapport de services de rapport en format PDF et l'une de mes exigences est de permettre l'inclusion de plusieurs emplacements dans le même rapport. Pour gérer cela, j'ai créé un paramètre de rapport multi-valeur qui semble faire l'affaire en utilisant l'interface RS, etc. Mais, j'utilise le webservice pour les services de reporting et ne peux pas pour la vie de moi comprendre comment régler le valeur du paramètre à identifier comme ayant plusieurs valeurs.Paramètre MultiValue

J'ai essayé simplement de le définir comme "LOC1, LOC2", mais cela est pris en une seule valeur. J'ai également essayé "LOC1" + System.Environment.NewLine + "Loc2".

Répondre

1

Vous pouvez l'envoyer en tant que chaîne délimitée par des virgules si vous souhaitez l'analyser à l'autre extrémité. Beaucoup de langues ont une méthode de style String.Split (",") que vous pouvez utiliser pour cela. Soit cela, soit vous pouvez construire un tableau (ou une liste, ou une collection) et le passer en paramètre, bien que cela implique de changer le contrat sur la méthode webservice.

1

figured it out, vous devez chaque valeur séparément sous le même nom, Snippet:

 //Register parameters 
    ArrayList<ParameterValue> parmValues; 

    for(Map.Entry<String,String> entry:reportParams.entrySet()) { 
     //is it multi-value? 
     if(entry.getValue().contains(",")) { 
      //yes, add multiple ParameterValues under the same name 
      // with each different value 
      for(String mval:entry.getValue().split(",")) { 
       ParameterValue pv = new ParameterValue(); 
       pv.setName(entry.getKey()); 
       pv.setValue(mval.trim()); 
       parmValues.add(pv); 
      } 
     } else { 
      //no, just a single value 
      ParameterValue pv = new ParameterValue(); 
      pv.setName(entry.getKey()); 
      pv.setValue(entry.getValue()); 
      parmValues.add(pv); 
     } 
    }