Pessoal,to com um problema bem chato,tenho uma pagina q lista orcamentos,qnd seleciono um deles é aberto um dialog com os produtos do orcamento,quero q qnd eu selecione algum produto, um system.out me mostre o codigo do produto que foi selecionado, ja tentei várias formas mas n tive sucesso, se alguem puder ajudar agradeço muito,abaixo o código:
Percebi que seu eu digito C que é a variavel da minha data table e aperto ctrl+espaco eke não exibi os campos,é normal?
A
ayslanms
No lugar de actionListener, coloca o action.
A questão de autocompetar, depende do sua IDE, o netbeans quando é caso de listas assim percebi que nem sempre ele autocompleta.
B
Bianca_Java
Mesma coisa :’(
T
Takeshi91
mas em qual situação não funciona? tipo, não importa quantas vezes clique, ele não funciona? detalhe melhor qual a situação em que isso ocorre e fica mais facil indentificar o problema.
tente também identar o código (Ctrl+Shift+I no NetBeans)
A
ayslanms
Veja se o código está indo corretamente. E acho que está faltando carregar esse objeto do seu System.out.println.
Talvez esteja faltando o
Por enquanto só ta chamando o metodo que seleciona quando eu clico no botão,mas o valor vem null ou então fica gerando várias exceções.
T
Takeshi91
Defina qual escopo você está trabalhando esta bean (Session, View, Request ou Application).
PS: no método “selecionar_produto” tente, não precisa receber parametro de inteiro, pois ao selecionar na datatable, a sua instancia de orcamento já receberá o objeto da linha selecionada em tela, então como parâmetro de busca você só precisa passar “orcamento.codigo”, ou algo do tipo. Tente instanciar este objeto de OrcamentoDao somente uma vez (no construtor da classe seria uma boa), pois assim uma hora, dependendo do uso da sua aplicação você poderá carregar a memória demais e derrubar o seu servidor de aplicação.
este botão fica dentro da table ou fora dela? Se este botão ficar na coluna da tabela, tenho uma solução bem mais simples do que a selection da Datatable
T
Takeshi91
Não se esqueça que todas as variáveis que são usadas na View (listas, etc) devem ser instanciadas na classe (seja um “” para Strings, novas instancias para objetos e listas de objetos, etc).
B
Bianca_Java
O botão fica dentro da coluna da tabela, qual a forma mais simples?
Percebi que seu eu digito C que é a variavel da minha data table e aperto ctrl+espaco eke não exibi os campos,é normal?
tente não passar parametros em chamadas de métodos feitos na View.
se o botão está fora da tabela, e ao selecionar uma linha o objeto na bean recebe a seleção, voce já tem o parametro que quer lá, é só trabalhar com ele (no método de busca, pegar o atributo deste objeto, no caso o código).
detalhe: se o escopo da bean for request, a cada ação você perderá informação pois no request o construtor da bean é rodado à cada requisição (ajax ou não)
T
Takeshi91
não sei atende ao escopo que voce deseja:
faça o botão mais ou menos assim
<p:commandButtonvalue="Default Button"action="#{orcamentosBean.selecionar_produto}"><f:setPropertyActionListenervalue="#{c}"target="#{orcamentosBean.orcamento}"/><!-- esta tag pega a var (que é uma objeto da sua lista) e instancia sua variavel na bean e o método selecionar_produto poderá trabalhar com esta instancia de objeto (linha selecionada) --></p:commandButton>
B
Bianca_Java
Também não deu certo Onde eu to errando?
T
Takeshi91
quando voce adicionei o f:setPropertyActionListener no seu botão, voce tirou o selection e selectionmode da datatable? esqueci de mencionar isto.
B
Bianca_Java
Não funcionou, mais alguma dica?
T
Takeshi91
seguinte, qual o escopo que você definiu para a sua Bean? (como eu já havia perguntado antes).
Preciso que poste a sua Bean, e o XHTML novamente para que possa analizar e entender exatamente como está estruturado, ai fica mais facil.
se prefirir, pode mandar um email, acho que fica mais facil para mim responder, pois estou meio ocupado.
[/quote]
No seu Bean, não vi o objeto a que o selection se refere, lá tem um objeto chamado orcamento? Pq quando você faz selection="#{orcamentosBean.orcamento}" ao selecionar alguma linha, ele vai carregar esse objeto, e para pegar o valor dele orcamento.getID();
Outra coisa, o pode ficar fora do p:dataTable.
Começamos a usar PrimeFaces em algumas aplicações novas onde trabalho, e já me inturmei bastante com ele, é bem fácil e prático, sem contar que é muito bonito.
Espero que ajude...
B
Bianca_Java
Pelo que estou percebendo o metodo não ta pegando o id do produto quando clico, ele ta achamando o metodo mas não ta pegando o id do produto.Alguem tem um exemplo de um metodo para pegar o id do item da tabela ao clicar?
C
Cesar_Pizolato
O que eu falei não resolveu?? Quando você selecionar alguma linha, o selection do p:datatable vai carregar um objeto, e ai você pega a propriedade que quiser do objeto.
Não é isso que você quer?
B
Bianca_Java
Exato, mas ainda não funcionou, ja fiz debug e tudo,mesmo assim ele não pega o valor.
C
Cesar_Pizolato
Estranho, uso isso em um sistema onde trabalho e funciona numa boa, segue código:
<p:dataTable id="datatable" var="lista" widgetVar="datatable"
value="#{meuController.listaGrid}" paginator="true" rows="10"
selection="#{meuController.linhaGridSelecionada}"
selectionMode="single" paginatorPosition="bottom"
emptyMessage="Nenhum registro para a exibição.">
Onde o linhaGridSelecionada é um objeto do meu Controller:
private ERP_PESSOA webObjeto = new ERP_PESSOA();
E depois eu pego ele normal:
webObjeto.getID_PESSOA();
E
edudebom
Usa qual versão do PrimeFaces ?
Só para confirmar, veja se na sua tabela o campo realmente é “codigo” já que é lido orcamentos.setCodigo_item(Rs.getInt(“codigo”));
B
Bianca_Java
J verifiquei, ta tudo certinho, eu ja usei esses metodos antes e funcionava 100% mas agora não to conseguindo.Alguem poderia postar algum exemplo de um sistema com master detail para eu ver como funciona, se tem que fazer algo diferente para poder fazer seleção e exclusão de registros.
T
Takeshi91
Bianca, precisamos saber qual escopo está trabalhando esta bean, fica mais facil diagnosticar seu problema
B
Bianca_Java
SessionScoped
T
Takeshi91
então, o problema é? você aperta o botão que estão na linha e ele não faz nada, ou dá erro?
Não se esqueça as seguintes coisas:
Ao colocar um botão na linha da tabela, vc não deve mais usar a opção selection do datatable, senão não conseguirá clicar no botão;
Em momento algum variaveis usadas como Values na sua view não podem estar apontando para NULL;
Use a tag que eu postei anteriormente dentro do botão, para quando você clicar nele, ele settar a var da linha (objeto que está na linha) como o objeto selecionado na sua view.
Se possivel poste a View e a Bean como estão exatamente neste momento aqui para analizarmos.