You can build the SelectOption
objects in your controller:
public Id selectedUserId {get; set;}
public List<SelectOption> getUserSelectOptions() {
List<SelectOption> options = new List<SelectOption>();
for (User u : [Select Id, Name from User order by Name limit 1000]) {
options.add(new SelectOption(u.Id, u.Name));
}
return options;
}
and so the Visualforce becomes:
<apex:selectList value="{!selectedUserId}" size="1">
<apex:selectOptions value="{!userSelectOptions}"/>
</apex:selectList>
Note that the earlier version of this answer suggested using an apex:repeat to allow multiple apex:selectOption elements but as Carlos reports in his comment below Visualforce validates against that.