JBossSeam>JSF>SelectManyCheckbox>SelectItems: severity=(ERROR 2), summary=(Conversion Error setting

0 respostas
rogerio.alcantara

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>
EconomicClasses.java:
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;
	}
}
EconomicClassConverter.java
@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;  
	    }  
	}
}
interface Register.java:
@Local
public interface Register {

	String register();

	void invalid();

	String getVerify();

	void setVerify(String verify);

	boolean isRegistered();

	void destroy();

	void setSelectedItems(String[] items);

	String[] getSelectedItems();
}
e RegisterAction.java:
@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;
	}

//....

}
Fiz várias tentativas como criar e inclui um converter, alterar o tipo do selectItems, inserir o s:convertEntity, sem sucesso.

Alguma sugestão?

Agradeço antecipadamente e fico no aguardo.

Criado 20 de abril de 2010
Respostas 0
Participantes 1