You need to sign in to do that
Don't have an account?
Accessing Webservice Data from Visualforce page
Good Evening Guys/Ladies, I've been banging my head with issue all day. I want to view specific fields from the Web Service, I can view the "bulk" data but I can't view let's say ONLY the make OR model fields using dot notation. I've posted a minimized/simplified verision of my code. Please help thanks
Here's what it returns:
Cars:[Make=Lamborghini, Make_type_info=(Make, http://microsoft.com/webservices/, null, 0, 1, false), Model=Gallardo,Model_type_info=(Model, http://microsoft.com/webservices/, null, 0, 1, false)] Cars:[Make=Lamborghini, Make_type_info=(Make, http://microsoft.com/webservices/, null, 0, 1, false), Model=Aventador,Model_type_info=(Model, http://microsoft.com/webservices/, null, 0, 1, false)]
I want to return lets say, the "model" field only using {!Sale.model} on the visualforce page.
<!--WebService -->
<!-- Minimized version -->
public Class ExternalCarLot{
public Car{
public String Make;
public String Model;
}
public ArrayOfCars{
public ExternalCarLot.Car[] Cars;
}
public class SalesForceMobileSoap{
WebServiceCallout.invoke();
}
ExternalCarLot.ArrayOfCars FindCarByMake(String make){
WebServiceCallout.invoke();
}
}
<!-- Controller -->
public class CallWBSvc{
public List<ExternalCarLot.Car> getCars(){
ExternalCarLot.SalesForceMobileSoap callWebService = ExternalCarLot.SalesForceMobileSoap();
ExternalCarLot.ArrayOfCars CarStorage = new ExternalCarLot.ArrayOfCars();
List<ExternalCarLot.Car> passBack = new List<ExternalCarLot.Car>();
CarStorage = callWebService.FindCarByMake('Lamborghini');
for(ExternalCarLot.Car tom : CarStorage.Cars){
passBack.add(tom);
}
return passBack;
}
<!-- VF Page -->
<apex:page controller="CallWBSvc">
<apex:repeat value="{!Cars}" var="Sale">
<apex:outputText value="{!Sale}" />
</apex:repeat>
</apex:page>
<!--Solution -->
I created a CarList class within the controller and used the CarList constructor to create a CarList for each car returned from the webservice. Then I passed that list back to the VFPage, see below. Using the code below, I'm now able to access each individual field using dot notation, {!Sale.Make} or {!Sale.Model}. #Weird
public class CarList{
public String Model{get; set;}
public String Make{get; set;}
public CarList(String Mo, String Mk){
this.Model = Mo;
this.Make = Ma;
}
}
public List<CarList> getCars(){
ExternalCarLot.SalesForceMobileSoap callWebService = ExternalCarLot.SalesForceMobileSoap();
ExternalCarLot.ArrayOfCars CarStorage = new ExternalCarLot.ArrayOfCars();
List<CarList> passBack = new List<CarList>();
CarStorage = callWebService.FindCarByMake('Lamborghini');
for(ExternalCarLot.Car tom : CarStorage.Cars){
passBack.add(tom.Model, tom.Make);
}
return passBack;
}
All Answers
It should be something like
<!--Solution -->
I created a CarList class within the controller and used the CarList constructor to create a CarList for each car returned from the webservice. Then I passed that list back to the VFPage, see below. Using the code below, I'm now able to access each individual field using dot notation, {!Sale.Make} or {!Sale.Model}. #Weird
public class CarList{
public String Model{get; set;}
public String Make{get; set;}
public CarList(String Mo, String Mk){
this.Model = Mo;
this.Make = Ma;
}
}
public List<CarList> getCars(){
ExternalCarLot.SalesForceMobileSoap callWebService = ExternalCarLot.SalesForceMobileSoap();
ExternalCarLot.ArrayOfCars CarStorage = new ExternalCarLot.ArrayOfCars();
List<CarList> passBack = new List<CarList>();
CarStorage = callWebService.FindCarByMake('Lamborghini');
for(ExternalCarLot.Car tom : CarStorage.Cars){
passBack.add(tom.Model, tom.Make);
}
return passBack;
}