[quote=apalmeira]Fiz “igual” ao seu exemplo.
Classe: User
public class User {
public User(){
}
public User(String userName, String email){
this.userName = userName;
this.email = email;
}
private String userName;
private String email;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return getUserName();
}
}
Classe: UserMB
public class UserMB {
private User user;
@SuppressWarnings("unchecked")
private Map users;
@SuppressWarnings("unchecked")
public UserMB(){
users = new HashMap();
users.put("Name 01", new User("Name 01", "Email 01"));
users.put("Name 02", new User("Name 02", "Email 02"));
users.put("Name 03", new User("Name 03", "Email 03"));
users.put("Name 04", new User("Name 04", "Email 04"));
users.put("Name 05", new User("Name 05", "Email 05"));
}
public String showName(){
return "show.xhtml";
}
public Date getServerTime(){
return new Date();
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@SuppressWarnings("unchecked")
public List getUsers() {
return new ArrayList(users.values());
}
public User getUserByName(String userName){
return (User) users.get(userName);
}
}
Classe: UserConverter
public class UserConverter implements Converter {
@Override
public Object getAsObject(FacesContext arg0, UIComponent arg1, String key) {
FacesContext context = FacesContext.getCurrentInstance();
UserMB userMB = (UserMB) context.getELContext().getELResolver().getValue(context.getELContext(), null, "userMB");
return userMB.getUserByName(key);
}
@Override
public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
return arg2.toString();
}
}
Código no JSF:
<h:selectOneMenu value="#{userMB.user}">
<f:selectItems value="#{userMB.users}"/>
<f:converter converterId="userConverter"/>
</h:selectOneMenu>
Faces config:
<converter>
<converter-id>userConverter</converter-id>
<converter-class>com.UserConverter</converter-class>
</converter>
Continua dando esse erro:
Argument Error: An option for component j_id289 was not an instance of javax.faces.model.SelectItem. Type found: java.util.ArrayList.
[/quote]
Boa tarde, cara!
É necessário fazer alguma outra configuração no projeto?
Esse método sempre me retorna vazio (null).
private TributosParser getTributosParser(FacesContext facesContext) {
if (tributosParser == null) {
ELContext elContext = facesContext.getELContext();
tributosParser = (TributosParser) elContext.getELResolver().getValue(elContext, null,
"tributosParser");
}
return tributosParser;
}