P:autocomplete erro de conversão

1 resposta
L

Boa noite pessoal.

Estou tentando utilizar o componente autocomplete do primefaces, com o atributo multiple=true, mas vem dando o seguinte erro:

java.lang.NumberFormatException: For input string: "marca"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Integer.parseInt(Integer.java:492)
	at java.lang.Integer.parseInt(Integer.java:527)

Segue componente na minha .xhtml:

<p:autoComplete value="#{marcaBeanRequest.marcasSelecionadas}"
						completeMethod="#{marcaBeanRequest.completaNome}" var="m"
						itemLabel="#{m.marca}" itemValue="#{m}" converter="marcaConverter"
						multiple="true"/>

Managed Bean:

@ManagedBean(name = "marcaBeanRequest")
@RequestScoped
public class MarcaBeanRequest {

	private Marca marca = new Marca();
	private List<Marca> list = new ArrayList<Marca>();
	private List<Marca> marcasSelecionadas = new ArrayList<Marca>();

	public MarcaBeanRequest() {
		this.list = new MarcaRN().listarTodos();
	}

	public Marca getMarca() {
		return marca;
	}

	public void setMarca(Marca marca) {
		this.marca = marca;
	}

	public List<Marca> getList() {
		return list;
	}

	public void setList(List<Marca> list) {
		this.list = list;
	}

	public String consultar() {
		return null;
	}

	public String incluir() {
		this.marca = new Marca();
		return null;
	}

	public String salvar() {
		return null;
	}

	public List<Marca> getMarcasSelecionadas() {
		return marcasSelecionadas;
	}

	public void setMarcasSelecionadas(List<Marca> marcasSelecionadas) {
		this.marcasSelecionadas = marcasSelecionadas;
	}

	public List<Marca> completaNome(String query) {
		List<Marca> sugestoes = new ArrayList<Marca>();
		for (Marca m : this.list) {
			if (m.getMarca().startsWith(query)) {
				sugestoes.add(m);
			}
		}
		return sugestoes;
	}

}

Converter:

@FacesConverter(value = "marcaConverter")
public class MarcaConverter implements Converter {

	@Override
	public Object getAsObject(FacesContext fc, UIComponent uic, String string) {
			MarcaRN marcaRN = new MarcaRN();
			Marca marca = marcaRN.consultarPorMarca(string);
			return marca;
		}

	@Override
	public String getAsString(FacesContext fc, UIComponent uic, Object o) {
		if (o == null || o.equals("")) {
			return "";
		} else {
			return String.valueOf(((Marca) o).getMarca());
		}
	}

}

Alguém sabe o que pode ser?

Obrigadão pela atenção, pessoal!

Abraço!

1 Resposta

A

Carinha, olhe a causa raiz: você passou pra gente 3 linhas do stack trace: duvido que seja só isso. Olha no stacktrace do erro porque que você está tentando converter um texto, "marca" em um valor numérico. Veja onde isto acontece e resolva o problema.

leandrors:
Boa noite pessoal.

Estou tentando utilizar o componente autocomplete do primefaces, com o atributo multiple=true, mas vem dando o seguinte erro:

java.lang.NumberFormatException: For input string: "marca"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Integer.parseInt(Integer.java:492)
	at java.lang.Integer.parseInt(Integer.java:527)

Segue componente na minha .xhtml:

<p:autoComplete value="#{marcaBeanRequest.marcasSelecionadas}"
						completeMethod="#{marcaBeanRequest.completaNome}" var="m"
						itemLabel="#{m.marca}" itemValue="#{m}" converter="marcaConverter"
						multiple="true"/>

Managed Bean:

@ManagedBean(name = "marcaBeanRequest")
@RequestScoped
public class MarcaBeanRequest {

	private Marca marca = new Marca();
	private List<Marca> list = new ArrayList<Marca>();
	private List<Marca> marcasSelecionadas = new ArrayList<Marca>();

	public MarcaBeanRequest() {
		this.list = new MarcaRN().listarTodos();
	}

	public Marca getMarca() {
		return marca;
	}

	public void setMarca(Marca marca) {
		this.marca = marca;
	}

	public List<Marca> getList() {
		return list;
	}

	public void setList(List<Marca> list) {
		this.list = list;
	}

	public String consultar() {
		return null;
	}

	public String incluir() {
		this.marca = new Marca();
		return null;
	}

	public String salvar() {
		return null;
	}

	public List<Marca> getMarcasSelecionadas() {
		return marcasSelecionadas;
	}

	public void setMarcasSelecionadas(List<Marca> marcasSelecionadas) {
		this.marcasSelecionadas = marcasSelecionadas;
	}

	public List<Marca> completaNome(String query) {
		List<Marca> sugestoes = new ArrayList<Marca>();
		for (Marca m : this.list) {
			if (m.getMarca().startsWith(query)) {
				sugestoes.add(m);
			}
		}
		return sugestoes;
	}

}

Converter:

@FacesConverter(value = "marcaConverter")
public class MarcaConverter implements Converter {

	@Override
	public Object getAsObject(FacesContext fc, UIComponent uic, String string) {
			MarcaRN marcaRN = new MarcaRN();
			Marca marca = marcaRN.consultarPorMarca(string);
			return marca;
		}

	@Override
	public String getAsString(FacesContext fc, UIComponent uic, Object o) {
		if (o == null || o.equals("")) {
			return "";
		} else {
			return String.valueOf(((Marca) o).getMarca());
		}
	}

}

Alguém sabe o que pode ser?

Obrigadão pela atenção, pessoal!

Abraço!

Criado 6 de fevereiro de 2012
Ultima resposta 7 de fev. de 2012
Respostas 1
Participantes 2