Problemas com <rich:select/> (jsf 2 + RichFaces 4)

1 resposta
Gilvane

Boa noite a todos! Estou com o seguinte problema, estou pegando os valores de um rich:dataTable, depois de um click na linha desejada, porém apos o "render" da página o objeto de um rich:selec não vem setado como foi salvo no banco. Se eu faço uma pesquisa pelo id do objeto pai, por exemplo ele vem setado. O que poderia estar errado?

Minhas Entidades:
@Entity
@Table(name = "VEICULO")
public class Veiculo implements Serializable, Comparable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "ID")
    @SequenceGenerator(name = "VEICULO_ID_GENERATOR", sequenceName = "VEICULO_SEQ", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "VEICULO_ID_GENERATOR")
    private Integer id;

    @Column(name = "FABRICANTE")
    private String fabricante;

    @Column(name = "MODELO")
    private String modelo;

    @Column(name = "PLACA")
    private String placa;

    @JoinColumn(name = "IDNUCLEO", referencedColumnName = "ID")
    @ManyToOne(optional = false, fetch = FetchType.EAGER)
    private Nucleo nucleo;

//getrs e setrs omitidos
}
@Entity
@Table(name = "NUCLEO")
public class Nucleo implements Serializable, Comparable<Nucleo> {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "ID")
    @SequenceGenerator(name = "NUCLEO_ID_GENERATOR", sequenceName = "NUCLEO_SEQ", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "NUCLEO_ID_GENERATOR")
    private Integer id;

    @Column(name = "DESCRICAO", nullable = false)
    private String descricao;

//getrs e setrs omitidos
}
Meu Bean
@Component
@Scope("session")
public class VeiculoBean extends Controler<Veiculo, Integer> {

    @Autowired
    private VeiculoService veiculoService;
    @Autowired
    private NucleoService nucleoService;
    private Veiculo veiculo;
    private List<Veiculo> veiculos;
    private List<Nucleo> nucleos;

     // getrs e setrs omitidos

     // Metodo responsável por pegar objeto da linha de dataTable
public void linhaSelecionada(AjaxBehaviorEvent event) {
        veiculo = (Veiculo) dataTable.getRowData();        
        acao = ACAO.MANTER;
    }

}
Verifiquei que o objeto veiculo tem o objeto nucleo no metodo linhaSelecionada, porém ao repintar a tela a combo não vem setada como deveria! dataTable
<rich:dataTable id="gridLista" rendered="#{bean.acao eq 'LISTAGEM'}"
    value="#{bean.listaDataTable}" var="item" styleClass="active-row"
    onrowmouseover="this.style.backgroundColor='#BFDFEA'"
    noDataLabel="Vazio"
    onrowmouseout="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'"
    rows="10" sortMode="single" binding="#{bean.dataTable}" stateVar="it">
    <a4j:ajax listener="#{bean.linhaSelecionada}" event="rowclick"
        render="out" execute="@this" status="aguarde" />
    <rich:column sortBy="#{item.id}">
        <f:facet name="header">#{listaProp.codigo}</f:facet>
        <h:outputText value="#{item.id}">
            <f:convertNumber pattern="000000" />
        </h:outputText>
    </rich:column>

    <ui:insert name="colunaListagem" />
    <f:facet name="footer">
        <rich:dataScroller for="gridLista" maxPages="10" id="paginator"
            page="#{bean.page}" render="gridLista" />
    </f:facet>
</rich:dataTable>
Combo

<rich:select id="nucleo" enableManualInput="true"
            defaultLabel="#{layoutProp.selecione}"
            rendered="#{bean.acao eq 'MANTER' || bean.acao eq 'CADASTRO'}"
            value="#{bean.veiculo.nucleo}" converter="comboConverter">
            <f:selectItems value="#{bean.listaNucleosCombo}" />
        </rich:select>
Desde-já obrigado, a todos pela atenção!

1 Resposta

Gilvane

Depois de alguns testes, observei que o atributo nucleo da Entitade Veiculo só e setado na combo quando faço alguma transação com o banco de dados; Porém como já tenho os dados carregados na minha UIDataTable, este atributo não esta sendo setado como deveria. o que fazer?

Criado 29 de julho de 2014
Ultima resposta 29 de jul. de 2014
Respostas 1
Participantes 1