[Resolvido] Primefaces selectOneMenu + converter

Pessoal boa tarde

Estou me batendo a manha inteira, pesquisando e ainda nao descobri meu problema

Tenho o seguinte na minha view

<p:selectOneMenu id="tipoLoja" converter="entityConverter" value="#{controller.tipoLoja}" valueChangeListener="#{controller.teste}"> <f:selectItems id="tipoLojaItens" value="#{controller.tiposLojas}" var="t" itemLabel="#{t.tipoLojaDescricao}" itemValue="#{t}"/> </p:selectOneMenu>

meu converter

[code]@Override
public Object getAsObject(FacesContext context, UIComponent component,
String value) {

	Class clazz = getClazz(context, component);
	this.setEntityClass(clazz);
	Object annotationFieldValue = ReflectionUtil.getAnnotationValue(
			clazz, Combox.class, "field");
	
	if (annotationFieldValue == null) {
		return null;
	}
	//Busca o nome do campo que é visualizado no combo
	String fieldName = annotationFieldValue.toString();
	AbstractEntity entity = this.findUniqueByField(fieldName, value);
	return entity;
}


@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
	
	if (value == null) {
		return "";
	}
	if (value instanceof String) {
		return (String) value;
	}
	if (value != null && !(value instanceof AbstractEntity)) {
		throw new IllegalArgumentException(
				"This converter only handles instances of BaseIdentityEntity");
	}
	
	
	String fieldName = ReflectionUtil.getAnnotationValue(
			Hibernate.getClass(value), Combox.class, "field")
			.toString();
	String result = (String) ReflectionUtil.getFieldValue(value, fieldName);
	return result;
}[/code]

Esta funcionando o converter bem certinho,

porem quando seleciono ou clico em um botão o valor selecionado no combo nao esta setando no objeto tipoLoja do meu controller

Ja tentei varias coisas e nao estou conseguindo, alguem pode me ajudar, urgente???

ja tentou colococar no selctonemenu

process="@this"

Olha funcionou, mas pq isso???

Com essa propriedade quando voce seleciona ele faz o “process” que consiste em pega o valor e jogar para o managedbean

se voce naum colocar isso ele vai fazer isso apenas quando a pagina for submetida

se vc precisa habilitar algum campo ou alguma coisa, com base no que usurio escolheu na tela, tem que por essa propriedade para que

quando o usuario mexa na selecão o valor novoair diretamente para o managedbean

Hmmm, blza, valeu ai colorado

cara to com dificuldade com esse converte poderia me ajudar…

<p:selectOneMenu value="#{grupoBean.listGrupos}"  effect="drop" 
                                      style="margin-left: 48px;" converter="GruposConverter">  
                         <f:selectItem itemLabel="Selecione um grupo" itemValue="" />  
                         <f:selectItems value="#{grupoBean.listGrupos}" var="grupos" 
                                        itemLabel="#{grupos.nomeGrupo}" itemValue="#{grupos.idGrupos}" 
                                        /> 
                        
                     </p:selectOneMenu>

meu select o q tenho q fazer no converte pra esse cara retornar o texto??
Object getAsObject,getAsString não entendi o pq eles sao necessarios… e pq de nao retorna a opçao selecionada??

[quote=b10machado]cara to com dificuldade com esse converte poderia me ajudar…

<p:selectOneMenu value="#{grupoBean.listGrupos}"  effect="drop" 
                                      style="margin-left: 48px;" converter="GruposConverter">  
                         <f:selectItem itemLabel="Selecione um grupo" itemValue="" />  
                         <f:selectItems value="#{grupoBean.listGrupos}" var="grupos" 
                                        itemLabel="#{grupos.nomeGrupo}" itemValue="#{grupos.idGrupos}" 
                                        /> 
                        
                     </p:selectOneMenu>

meu select o q tenho q fazer no converte pra esse cara retornar o texto??
Object getAsObject,getAsString não entendi o pq eles sao necessarios… e pq de nao retorna a opçao selecionada??

[/quote]

Cara posso estar falando besteira, mas…

Tu tem que usar o converter para dizer para o JSF, quem tu vai mostrar na tela getAsString e qual cara tu vai vincular no ta tua propriedade do teu ManageBean

Pelo que estou vendo no teu codigo o value grupoBean.listGrupos da tag p:selectOneMenu esta errada, pois tu ta usando o mesmo em f:selectItems value="#{grupoBean.listGrupos}",

A propriedade value de p:selectOneMenu, é o teu objeto do teu manageBean que ira receber a opção selecionada, por isso do getAsObject

e para a opcao selecione utilize assim, pois eu ja tentei da maneira q tu fez nunca funcionou, hehehe

<f:selectItem itemLabel=“Selecione blah,blah” />