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:
[code]
@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
}[/code][code]
@Entity
@Table(name = “NUCLEO”)
public class Nucleo implements Serializable, Comparable {
/**
*
*/
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
}[/code]
Meu Bean
[code]
@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;
}
}[/code]
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
[code]<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>[/code]
Desde-já obrigado, a todos pela atenção!