SuggestionBox

04/10/2011

0

Gostaria de uma ajuda. Eu estou utilizando o suggestionbox, quando eu tento passar o objeto através do setPropertyActionListener ele dá um erro. segue abaixo o código.

	
	
	
	 									
								
									
								
						
     	 								 		 						
	
								
								
	


Fabiano Barros

Fabiano Barros

Responder

Posts

04/10/2011

Fabiano Barros

Estou enviando o código.

<a4j:region immediate=true renderRegionOnly=true>
<td><h:outputText value=Nome: styleClass=t1/></td>
<td><h:inputText size=50 value=#{cadclienteprocessomb.participante} id=text styleClass=campo1/></td>
<td><rich:suggestionbox id=suggestionBoxId for=text
suggestionAction=#{cadclienteprocessomb.autocomplete}
fetchValue=#{result.nome} width=500 height=100 var=result>

<h:column>
<h:outputText value=#{result.nome}/>
</h:column>

<a4j:support event=onselect> <f:setPropertyActionListener value=#target=#{cadclienteprocessomb.selecao}/>
</a4j:support>
</rich:suggestionbox></td>
</a4j:region>
Responder

04/10/2011

Davi Costa

Qual erro?

att Davi
Responder

04/10/2011

Fabiano Barros

O erro que esta dando é este :

04/10/2011 11:43:02 com.sun.faces.lifecycle.ApplyRequestValuesPhase execute
WARNING: javax.el.ELException: /pages/cadastro/cadclienteprocesso.xhtml @86,80 suggestionAction=#{cadclienteprocessomb.autocomplete}: java.lang.NullPointerException
javax.faces.FacesException: javax.el.ELException: /pages/cadastro/cadclienteprocesso.xhtml @86,80 suggestionAction=#{cadclienteprocessomb.autocomplete}: java.lang.NullPointerException
at javax.faces.component.UIData.invokeOnComponent(UIData.java:807)
at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:720)
at javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:675)
at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:720)
at javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:675)

Quando eu retiro o setPropertyActionListener funciona normalmente.

Atte.
Fabiano do Souto Barros.
Responder

04/10/2011

Davi Costa

Este é o erro, está dando nullpointer no seu Bean

att Davi
Responder

04/10/2011

Fabiano Barros

Vou verificar o meu bean!

Responder

04/10/2011

Fabiano Barros

Davi,
não consegui descobrir o que esta errado no meu bean.


Atte.
Fabiano do Souto Barros.
Responder

04/10/2011

Robson Teixeira

poste o seu bean.
Responder

04/10/2011

Fabiano Barros

Segue o código bean!

Atte.
Fabiano do Souto Barros.

public class CadClienteProcessoMB implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = -3754428558909133377L;

	private ArrayList<AutorProcesso> clienteprocessos = null;
	private AutorProcesso clienteprocesso=null;
	private int scrollerPage=1;
	private AutorProcesso currentItem;
	private Autor cliente=null;
	private int currentRow;
	private ArrayList<Autor> clientes;
	private ArrayList<Processo> processos = null;
	private Processo processo=null;
	private String numero=null;
	private String ro;
	private ClienteProcessoPK clienteprocessopk = null;
	private Processo filtroProcesso;
	private AutorProcesso filtroClienteProcesso;
	private String numeroCliente;
	private String numeroRo;
	private String tipo;
	private String Participante;
	private Autor selecao = null;
	
	
	
	public Autor getSelecao() {
		return selecao;
	}


	public void setSelecao(Autor selecao) {
		this.selecao = selecao;
	}


	public String getParticipante() {
		return Participante;
	}


	public void setParticipante(String participante) {
		Participante = participante;
	}


	public String getTipo() {
		return tipo;
	}


	public void setTipo(String tipo) {
		this.tipo = tipo;
	}


	private Map<String, Object> itensClientes = null;
	
	
	public Map<String, Object> getItensClientes(){
		itensClientes = new LinkedHashMap<String, Object>();
		
		//this.recuperarDepartamentos();
		
		for (Autor cli : clientes) {
			itensClientes.put(cli.getNome(), cli.getId());
		}
		return itensClientes;
	}
	
	
	public CadClienteProcessoMB(){
		this.novo();
		
		clienteprocesso  = new AutorProcesso();
		clienteprocessos = new ArrayList<AutorProcesso>();
		clientes = new ArrayList<Autor>();
		cliente = new Autor();
		processos = new ArrayList<Processo>();
		processo = new Processo();
		filtroProcesso = new Processo();
		clienteprocessopk = new ClienteProcessoPK();
		filtroClienteProcesso = new AutorProcesso();
		clienteprocesso.setAutor(cliente);
		clienteprocesso.setProcesso(processo);
		selecao = new Autor();
		this.recuperarClientesCombo();
		this.recuperarTodosClientes();
		//this.recuperarTodosProcessos();
	}

	public List<Autor> autocomplete(Object suggest){
		String pref = (String)suggest;
		ArrayList<Autor> result = new ArrayList<Autor>();
				
		Iterator<Autor> iterator = this.getClientes().iterator();
		while (iterator.hasNext()){
			Autor elem = ((Autor)iterator.next());
		if(elem.getNome() != null && elem.getNome().toLowerCase().indexOf(pref.toLowerCase())==0 || .equals(pref)){
		result.add(elem);
			}
		}
		return result;
		}	

	

	public String getNumeroCliente() {
		return numeroCliente;
	}





	public void setNumeroCliente(String numeroCliente) {
		this.numeroCliente = numeroCliente;
	}





	public ArrayList<AutorProcesso> getClienteprocessos() {
		
		
		return clienteprocessos;
	}

	public void setClienteprocessos(ArrayList<AutorProcesso> clienteprocessos) {
		this.clienteprocessos = clienteprocessos;
	}

	public AutorProcesso getClienteprocesso() {
		int idRealProcesso;
		int idRealClienteProcesso;
		
		//this.novo();
		
		//Capturando ID	
		String idClienteProcesso = (String)FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(idclienteprocesso);
		
		String idProcesso = (String)FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(idProcesso);
	
		
		if (idProcesso==null){
			idRealProcesso = 0;
		}else{
			idRealProcesso = Integer.parseInt(idProcesso);
			
			processo = (Processo)BusinessFactory.getProcessoBus().recuperarPorId(idRealProcesso);
			
			clienteprocesso.setProcesso(processo);
		}
		
		
		if (idClienteProcesso==null){
			idRealClienteProcesso = 0;
		}else{
			idRealClienteProcesso = Integer.parseInt(idClienteProcesso);
			
			clienteprocesso = (AutorProcesso)BusinessFactory.getClienteProcessoBus().recuperarPorId(idRealClienteProcesso);
			
		}
		return clienteprocesso;
	}
Responder

04/10/2011

Luciano Martins

Segue o código bean!

Atte.
Fabiano do Souto Barros.

public class CadClienteProcessoMB implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = -3754428558909133377L;

	private ArrayList<AutorProcesso> clienteprocessos = null;
	private AutorProcesso clienteprocesso=null;
	private int scrollerPage=1;
	private AutorProcesso currentItem;
	private Autor cliente=null;
	private int currentRow;
	private ArrayList<Autor> clientes;
	private ArrayList<Processo> processos = null;
	private Processo processo=null;
	private String numero=null;
	private String ro;
	private ClienteProcessoPK clienteprocessopk = null;
	private Processo filtroProcesso;
	private AutorProcesso filtroClienteProcesso;
	private String numeroCliente;
	private String numeroRo;
	private String tipo;
	private String Participante;
	private Autor selecao = null;
	
	
	
	public Autor getSelecao() {
		return selecao;
	}


	public void setSelecao(Autor selecao) {
		this.selecao = selecao;
	}


	public String getParticipante() {
		return Participante;
	}


	public void setParticipante(String participante) {
		Participante = participante;
	}


	public String getTipo() {
		return tipo;
	}


	public void setTipo(String tipo) {
		this.tipo = tipo;
	}


	private Map<String, Object> itensClientes = null;
	
	
	public Map<String, Object> getItensClientes(){
		itensClientes = new LinkedHashMap<String, Object>();
		
		//this.recuperarDepartamentos();
		
		for (Autor cli : clientes) {
			itensClientes.put(cli.getNome(), cli.getId());
		}
		return itensClientes;
	}
	
	
	public CadClienteProcessoMB(){
		this.novo();
		
		clienteprocesso  = new AutorProcesso();
		clienteprocessos = new ArrayList<AutorProcesso>();
		clientes = new ArrayList<Autor>();
		cliente = new Autor();
		processos = new ArrayList<Processo>();
		processo = new Processo();
		filtroProcesso = new Processo();
		clienteprocessopk = new ClienteProcessoPK();
		filtroClienteProcesso = new AutorProcesso();
		clienteprocesso.setAutor(cliente);
		clienteprocesso.setProcesso(processo);
		selecao = new Autor();
		this.recuperarClientesCombo();
		this.recuperarTodosClientes();
		//this.recuperarTodosProcessos();
	}

	public List<Autor> autocomplete(Object suggest){
		String pref = (String)suggest;
		ArrayList<Autor> result = new ArrayList<Autor>();
				
		Iterator<Autor> iterator = this.getClientes().iterator();
		while (iterator.hasNext()){
			Autor elem = ((Autor)iterator.next());
		if(elem.getNome() != null && elem.getNome().toLowerCase().indexOf(pref.toLowerCase())==0 || .equals(pref)){
		result.add(elem);
			}
		}
		return result;
		}	

	

	public String getNumeroCliente() {
		return numeroCliente;
	}





	public void setNumeroCliente(String numeroCliente) {
		this.numeroCliente = numeroCliente;
	}





	public ArrayList<AutorProcesso> getClienteprocessos() {
		
		
		return clienteprocessos;
	}

	public void setClienteprocessos(ArrayList<AutorProcesso> clienteprocessos) {
		this.clienteprocessos = clienteprocessos;
	}

	public AutorProcesso getClienteprocesso() {
		int idRealProcesso;
		int idRealClienteProcesso;
		
		//this.novo();
		
		//Capturando ID	
		String idClienteProcesso = (String)FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(idclienteprocesso);
		
		String idProcesso = (String)FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(idProcesso);
	
		
		if (idProcesso==null){
			idRealProcesso = 0;
		}else{
			idRealProcesso = Integer.parseInt(idProcesso);
			
			processo = (Processo)BusinessFactory.getProcessoBus().recuperarPorId(idRealProcesso);
			
			clienteprocesso.setProcesso(processo);
		}
		
		
		if (idClienteProcesso==null){
			idRealClienteProcesso = 0;
		}else{
			idRealClienteProcesso = Integer.parseInt(idClienteProcesso);
			
			clienteprocesso = (AutorProcesso)BusinessFactory.getClienteProcessoBus().recuperarPorId(idRealClienteProcesso);
			
		}
		return clienteprocesso;
	}


O q recebe esse SuggestionBox? Pq o nullpointer tá dando num método no seu ManagedBean, aliás seu ManagedBean está bem fora do q tem q ser pq ele mistura as propriedades duma classe com métodos de um managedBean...v ai.
Responder

05/10/2011

Fabiano Barros

O suggestibox recebe o metodo autocomplete.

<a4j:region immediate=true renderRegionOnly=true>
<td><h:outputText value=Nome: styleClass=t1/></td>
<td><h:inputText size=50 value=#{cadclienteprocessomb.participante} id=text styleClass=campo1/></td>
<td><rich:suggestionbox id=suggestionBoxId for=text 
suggestionAction=#{cadclienteprocessomb.autocomplete}
fetchValue=#{result.nome} width=500 height=100 var=result>

<h:column>
<h:outputText value=#{result.nome}/>
</h:column>

<a4j:support event=onselect> <f:setPropertyActionListener value=#target=#{cadclienteprocessomb.selecao}/> 
</a4j:support> 
</rich:suggestionbox></td>
</a4j:region>


Responder

05/10/2011

Davi Costa

E é lá que está dando nullpointer, que tal vc debugar e descobrir o que está vindo nulo.

att Davi
Responder

06/10/2011

Fabiano Barros


E é lá que está dando nullpointer, que tal vc debugar e descobrir o que está vindo nulo.

att Davi



Fui debugando e não encontrei erro no autocomplete do suggestionbox. O que acontece é quando eu passo por parametro o identificador ele dá o erro. O por quê está acontecendo isto eu não estou encontrando. Se puderem me dar uma dica!

Atte.
Fabiano do Souto Barros.
Responder

21/10/2011

Dyego Carmo

Tentou usar o PRimeFaces ? ele tem um componente que faz tudo isto para voce :(
Responder

23/10/2011

Fabiano Barros

Dyego vou utilizar o primefaces!

Dyego eu posso utilizar o Richfaces e o primefaces no mesmo projeto?

Desde já agradeço.
Fabiano do Souto Barros.
Responder

25/10/2011

Dyego Carmo

Poder voce pode... mas eu sugeriria que não hehe...

sao apis bem heterogenias :)

Valeu !
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar