Alguem já passou por isso? Tenho um converter a qual não é reconhecido… fica com um Warn na página xhtml com a seguinte mensagem: ‘converterDiretorio’ converter id is not registered.
@FacesConverter(value="converterDiretorio")
public class DiretorioConverter implements Converter {
@Override
public Object getAsObject(FacesContext context, UIComponent component, String valor) {
if(valor.trim().equals("")){
return null;
}else{
Diretorio_inicial dir = new Diretorio_inicial(new Integer(valor));
return dir;
}
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object valor) {
if(valor == null){
return null;
}
Diretorio_inicial dir = (Diretorio_inicial) valor;
return dir.getId_datasetini().toString();
}
}
Não aparece nenhum erro quando inicio a aplicação… e renderiza normal a tela… mas nao consigo fazer uma consulta, utilizando como parametro um item pego deste listbox…
que alias, da erro… e estou tentando procurar uma solução ainda =/
22:10:05,229 INFO [stdout] (http-localhost-127.0.0.1-9090-3) org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: astronomia.model.Diretorio_inicial
22:10:05,229 INFO [stdout] (http-localhost-127.0.0.1-9090-3) Transaction marked as rollbackOnly
Mas vamos por partes neh… heheh
Obrigado desde já! (:
acabei de descobrir uma coisa… estou usando o componente h:selectOneListbox, mas se uso o do primefaces p:selectOneListbox, ae reconhece!
sabem me dizer pq, ou como fzer pra usar html basico? nao queria usar o do prime pq, não sei oq acontece, acho q é pq troquei o theme dele, mas com o do primefaces, eu nao consigo selecionar algum item, ou melhor, quando seleciono, nao aparece (fica marcado com outra cor) o item q selecionei…
[quote]
O outro problema não tem nada a ver com esse.
Voce deve salvar algo antes de tentar salvar o Diretorio_inicial. Posta o código ai![/quote]
Mas eu não estou salvando amigo… só quero fazer uma consulta no banco, pegando como parametro um item do listbox…
qual parte do código gostaria que eu colocasse?
[quote=pcsantana]acabei de descobrir uma coisa… estou usando o componente h:selectOneListbox, mas se uso o do primefaces p:selectOneListbox, ae reconhece!
sabem me dizer pq, ou como fzer pra usar html basico? nao queria usar o do prime pq, não sei oq acontece, acho q é pq troquei o theme dele, mas com o do primefaces, eu nao consigo selecionar algum item, ou melhor, quando seleciono, nao aparece (fica marcado com outra cor) o item q selecionei…
[quote]
O outro problema não tem nada a ver com esse.
Voce deve salvar algo antes de tentar salvar o Diretorio_inicial. Posta o código ai![/quote]
Mas eu não estou salvando amigo… só quero fazer uma consulta no banco, pegando como parametro um item do listbox…
qual parte do código gostaria que eu colocasse?
Obrigado pela atenção! (:[/quote]
No meu os warnins tambem ficam, mas funciona! Tenta mudar de ListBox para OneMenu, olha o mapeamento direitinho ai.
mas realmente to apanhando faz tempo ja pra conseguir fazer isso… rodando o debug, parece que o getDatasetini_selecionado() chega nulo…
e aparece aquele erro no console q te mostrei…
vc conhece algum tutorial ou material que mostre um exemplo parecido com isso que eu estou tentando fazer??
Só encontro exemplos de CRUD, nenhum exemplo de consulta em banco com parametros e tals… =/
Se alguém me puder tirar uma dúvida…
no meu relacionamento de 1:N, no banco de dados é criado uma FK do tipo Integer na tabela Imagem, que é a id (PK) da tabela Diretorio.
Nesse caso, na minha consulta, eu não deveria pegar a id como parametro, ao invés do objeto como um todo?
Em todo caso, é que ao rodar o debugg eu vejo que não consigo pegar o que foi selecionado no meu listbox (ja tentei com selectonemenu tbm)… =/
@FacesValidator(“br.com.pirralhos.view.validation.ComboValidator”)
public class ComboValidator implements Validator {
@Override
public void validate(FacesContext arg0, UIComponent arg1, Object value)
throws ValidatorException {
if (value == null || value.toString().equals("0")) {
FacesMessage msg = new FacesMessage("Campo " + arg1.getId()
+ " é obrigatório!", "Selecione um valor para o campo "
+ arg1.getId());
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ValidatorException(msg);
}
}
public String gravar() {
professor.setFkEstadoCivl(new EstadoCivil(getIdEstadoCivil()));
getProfessorDAO().save(getProfessor());
}
professor.setFkEstadoCivl(new EstadoCivil(getIdEstadoCivil())); ele seta para o atributo fkEstadoCivl o Integer idEstadoCivil que pegou no componente? Para assim saber qual estado civil é para salvar? seria isso?
No meu caso, como quero fazer uma consulta, eu faria isso ae antes de chamar ou metodo para pesquisa… algo assim?
imagemDAO.beginTransaction();
imagem_selecionado.setDataset_ini(new Diretorio_inicial(getIdDiretorio()));
lista = imagemDAO.procuraImagem(getDatasetini_selecionado());
imagemDAO.commitAndCloseTransaction();
E para que serve a opção optional=false no mapeamento? @ManyToOne(optional = false)
Obrigado mais uma vez!!
[quote]professor.setFkEstadoCivl(new EstadoCivil(getIdEstadoCivil())); ele seta para o atributo fkEstadoCivl o Integer idEstadoCivil que pegou no componente? Para assim saber qual estado civil é para salvar? seria isso?
No meu caso, como quero fazer uma consulta, eu faria isso ae antes de chamar ou metodo para pesquisa… algo assim? [/quote]
Sim.
A proriedade optional indica se ele deve ser null ou não, a nivel de banco.
Amigo, agradeço muito mesmo a ajuda que está me dando… mas sou novo ainda nisso, e algumas coisas ficam meio confusas pra mim…
esse modo que me mostrou de pegar o item selecionado, só da certo com SelectItem? Eu estava tentando fazendo de um modo mais simples, que era simplesmente retornar uma lista de objetos pegos no banco…
no método
public static <T> List<SelectItem> getSelectItems(String keyFieldName, String labelFieldName,List<T> objects)
como e o que voce passa paraaas variáveis: String keyFieldName, String labelFieldName,List objects ??