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??
felipef
Outubro 24, 2012, 2:08pm
#7
[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” />