function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
StianSStianS 

Bind web service results (an object) to Visualforce list

Hi,

struggling with finding any good documentation for this scenario.

Have generated Apex class from an WSDL:

 

public class MembershipService {

public class ArrayOfMembershipUserHelper {

public LIST:MembershipService.MembershipUserHelper MembershipUserHelper;
}

public class FindUsersByEmailResponse_element {

public MembershipService.ArrayOfMembershipUserHelper FindUsersByEmailResult;
}


public class MembershipServiceSoap {

public String clientCert_x;
public String clientCertPasswd_x;
public String endpoint_x;
public MAP:String,String inputHttpHeaders_x;
public MAP:String,String utputHttpHeaders_x;
public Integer timeout_x;

public MembershipService.ArrayOfMembershipUserHelper FindUsersByEmail(String, String){};
}

public class FindUsersByEmail_element {

public String emailToMatch;
public String secret;
}

public class MembershipUserHelper {

public Datetime CreationDate;
public String Email;
public Boolean Newsletter;
public String UserId;
public String Username;
}
}

 Here is an extract from the custom controller that cals the external web service:

 

public class MembershipController {

public List<MembershipService.MembershipUserHelper> members { get; set; }

public MembershipController() {
//this fails, cannot bind
members = getMembers('name@domain.com');
}

public List<MembershipService.MembershipUserHelper> getMembers(string emailToMatch)
{
MembershipService.MembershipServiceSoap svc = new MembershipService.MembershipServiceSoap();
MembershipService.ArrayOfMembershipUserHelper foundUsers = svc.FindUsersByEmail('secretcode', emailToMatch);

return (List<MembershipService.MembershipUserHelper>)foundUsers.MembershipUserHelper;
}

}

 

 

 Here is the markup in the Visualforce page:

<apex:page Controller="MembershipController">
<apex:pageBlock >
<apex:Form >
<apex:dataTable id="listResults" value="{!members}" var="m">
<apex:column value="{!m.Username}"/>
</apex:dataTable>
</apex:Form>
</apex:pageBlock>
</apex:page>

 

When running this, I get an error message saying:

getUsername

 

How do I setup this correct to display a list of the array returning a complex object from the web service?

 

 

 

Best Answer chosen by Admin (Salesforce Developers) 
Ron HessRon Hess

you will need to modify the member class to have getters and settter , well mostly getters.

 

something like this

 

 

public class MembershipUserHelper { public Datetime CreationDate {get; set; } public String Email {get; set; } public Boolean Newsletter {get; set; } public String UserId {get; set; } public String Username {get; set; } }

 

this creates properties that can be accessed from visualforce using {!m.username}

 

 

 

All Answers

Ron HessRon Hess

you will need to modify the member class to have getters and settter , well mostly getters.

 

something like this

 

 

public class MembershipUserHelper { public Datetime CreationDate {get; set; } public String Email {get; set; } public Boolean Newsletter {get; set; } public String UserId {get; set; } public String Username {get; set; } }

 

this creates properties that can be accessed from visualforce using {!m.username}

 

 

 

This was selected as the best answer
StianSStianS

Hi,

great solution. Why isn't this autogenerated? Isn't this the intended use?

 

Regards

Stian