Boa tarde pessoal, tudo bom?
Sou iniciante em JBossSeam e não estou conseguindo obter os valores selecionados de um SelectManyCheckbox em minha Action.
Ao submeter a página, é apresentado o seguinte erro:...severity=(ERROR 2), summary=(Conversion Error setting value '0 1 2' for '#{selectedItems}'....
Já vi alguns problemas semelhantes nos posts abaixo, mas ainda não obtive sucesso.
http://www.guj.com.br/posts/list/134639.java#724371
http://www.guj.com.br/posts/list/139974.java#753492
http://www.guj.com.br/posts/list/203966.java#1033994
Para facilitar o entendimento, segue trechos de código:
signup.xhtml:<h:selectManyCheckbox value="#{selectedItems}" layout="pageDirection" converter="economicClassConverter">
<f:selectItems value="#{economicClasses.selectItems}" var="economicClass" label="#{economicClass.description}" />
<s:convertEntity />
</h:selectManyCheckbox>
public class EconomicClasses {
private Collection<EconomicClass> classes;
public List<ClassificationAdapter> getResultList() {
final Collection<ClassificationAdapter> roots = new TreeSet<ClassificationAdapter>();
ClassificationAdapter.fillCollection(roots, classes);
return new ArrayList<ClassificationAdapter>(roots);
}
public List<SelectItem> getSelectItems() {
final List<SelectItem> economicClasses = new LinkedList<SelectItem>();
for (final ClassificationAdapter economicClass : this.getResultList()) {
economicClasses.add(new SelectItem((EconomicClass)economicClass.getAdaptee(), economicClass.getDescription()));
}
return economicClasses;
}
}
@Name("economicClassConverter")
@BypassInterceptors
@Converter
public class EconomicClassConverter implements javax.faces.convert.Converter {
@Override
public Object getAsObject(final FacesContext context, final UIComponent component, final String value) throws ConverterException {
try {
final Integer id = new Integer(value);
return new EconomicClass(id);
} catch (Exception e) {
return null;
}
}
@Override
public String getAsString(final FacesContext context, final UIComponent component, final Object value) throws ConverterException {
if (value != null) {
return value.toString();
} else {
return null;
}
}
}
@Local
public interface Register {
String register();
void invalid();
String getVerify();
void setVerify(String verify);
boolean isRegistered();
void destroy();
void setSelectedItems(String[] items);
String[] getSelectedItems();
}
@Stateful
@Scope(EVENT)
@Name("register")
public class RegisterAction extends EntityController implements Register {
//....
@In(required=false, create = true)
private String[] selectedItems;
@Override
public void setSelectedItems(String[] items) {
this.selectedItems = items;
}
@Override
public String[] getSelectedItems() {
return this.selectedItems;
}
//....
}
Alguma sugestão?
Agradeço antecipadamente e fico no aguardo.