Combobox (SelectOneMenu) adicionar novo item ao clicar no item "Adicionar" dentro do combobox
10 respostas
N
netoSJB
Alguém sabe como posso fazer um combobox img [/img]abrir uma nova pagina jsf ao clicar em um do seus itens (SelectItem)
Eu fiz aqui um combobox e populei ele com os registros do banco de dados, só que quero que o usuário possa adicionar outro registro caso não tenha o desejado.
Dê uma lida sobre o p:ajax, é simples e é o que você procura :lol:
N
netoSJB
Certo, já tava tentando fazer isso com o p:ajax só que não estava dando muito certo, mas vou estudar mais sobre esse p:ajax e tentar novemente com a sua dica
preciso abrir uma janela pode ser interna ou externa onde crio o objeto e então sim depois de criado adiciono a opção, tens uma outra dica para isso?
agradeço
A
andre.froes
Porque você não deixa o componente inputText já criado porém oculto? Se a pessoa selecionar, você simplesmente renderiza ele da mesma forma e já deixa “ligado” com o seu backingbean, e utiliza se necessário e se preenchido.
é que preciso adicionar o objeto inteiro, e esse objeto tem uns 5 atributos , ai seria melhor já chamar a telinha que adiciona o novo objeto, essa telinha eu já tenho pronto ela já faz as validações e tudo para adicionar o objeto certinho
A
andre.froes
A forma de como realizar permanece a mesma, tem como fazer criando o componente, mas para localizar o componente e realizar a operação é muito mais chato e cansativo de se fazer.
N
netoSJB
Isso eu quero como componente, pode me mostrar como é?
Eu to tentando fazer assim, com o ui:include mas eu não sei como faço o xhtml do include comunicar o o xhtml que inseriu o include
importjava.io.Serializable;importjava.util.ArrayList;importjava.util.Collection;importjavax.faces.bean.ManagedBean;importjavax.faces.bean.ViewScoped;importjavax.faces.model.SelectItem;importorg.primefaces.context.RequestContext;@ManagedBean(name="mb")@ViewScopedpublicclassNovaOpcaoimplementsSerializable{privatestaticfinallongserialVersionUID=67183522225166434L;privateIntegeridSelecionado;publicCollection<SelectItem>getCarregarMenu(){// aqui você insere uma query e carrega teus dadosCollection<SelectItem>lst=newArrayList<SelectItem>();lst.add(newSelectItem(null,"Selecione"));for(inti=0;i<5;i++){lst.add(newSelectItem(i,"Opção "+i));}lst.add(newSelectItem(99,"Adicionar"));returnlst;}publicvoidverificarEAbrirDialog(){if(idSelecionado==99){RequestContext.getCurrentInstance().execute("dlgAdicionar.show()");}}publicvoidadicionar(){//aqui você adiciona o item no bd, ao terminar,//chama a função do getCarregarMenu e da um upade no componentegetCarregarMenu();RequestContext.getCurrentInstance().update("select");RequestContext.getCurrentInstance().execute("dlgAdicionar.hide()");}publicIntegergetIdSelecionado(){returnidSelecionado;}publicvoidsetIdSelecionado(IntegeridSelecionado){this.idSelecionado=idSelecionado;}}
N
netoSJB
Ok andre.froes essa parte está funcionando,
mas agora como posso fazer para o combobox (SelectOneMenu) já selecione o objeto recem criado, eu to fazendo assim só que nao está dando certo:
No controller da telinha que inclui o objeto eu injetei (@Inject) o controller da pagina mãe (o que contem o combobox) e tentei atualizar ele usando o comando:
O comando que seleciona o valor no combobox está certo, ja testei diretamente no controller da pagina mae e funciona, mas quando tento acessar pela pagina filha não da certo,
acredito que seja algo com o @inject que não sendo acessada a mesma instancia e sim sendo criada outra, mas na pagina mãe eu ja coloquei @ScopedSession ApplicationSession mas nenhum da certo
N
netoSJB
Consegui resolver o problema, era só problema com a requisição ajax mesmo para redenrizar o componente que não estava certo.