You need to sign in to do that
Don't have an account?
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?
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
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}
Hi,
great solution. Why isn't this autogenerated? Isn't this the intended use?
Regards
Stian