Tenho um simples exemplo de 2 selectOneChoice um de UF outro de cidade, que quando na insersão funcionan selecionando a UF no evento valueChangeListener lista as cidades daquela UF, o problema é quando fazer uma alteração do cadastro em que preciso que a UF e a cidades venham já selecionada conforme o banco; e no selectOneChoice da cidade apresente somente as cidades do respectiva UF. Aonde posso colocar a operação do meu AM para executar antes do formulário ser apresentado?
Atenciosamente
ADF: selectOneChoices carregando valor selecionado
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:
o atributo value do seu selectOneChoice de cidades tem q receber o valor igual ao do banco e então ele sera selecionado..
UF e cidade referente a algum cadastro certo?!.. você pode linkar com um VL o seu VO de UF e usar outro VL para linkar o seu VO de cidades e então quando abrir o seu cadastro ele(ADF BC) já vai trazer a UF e cidade referentes aquele cadastro
UF e cidade referente a algum cadastro certo?!.. você pode linkar com um VL o seu VO de UF e usar outro VL para linkar o seu VO de cidades e então quando abrir o seu cadastro ele(ADF BC) já vai trazer a UF e cidade referentes aquele cadastro
-
- Rank: Programador Júnior
- Mensagens: 20
- Registrado em: Qua, 26 Ago 2009 7:43 pm
- Localização: PR
Sim estaria tudo certo assim, porém gostaria que no combo das cidades apresentasse somente as cidades daquela uf. Pois creio que fazendo assim apresentará todas as cidades. Teriamos que fazer um procedimento para buscar o id da uf já cadastrada e executar a operação do meu VO cidade onde um paramatro iduf seja igual está uf. Meu maior problema é onde posso executar está operação antes de carregar o formulário?
Atenciosamente,
Atenciosamente,
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:
você pode fazer um metodo no AM com esta implementaçao que filtre as combos..
criar um methodAction no pageDef e criar um invokeAction para este methodAction que você criou e chamar dessa forma
RefreshCondition="#{adfFacesContext.postback == true}"
criar um methodAction no pageDef e criar um invokeAction para este methodAction que você criou e chamar dessa forma
RefreshCondition="#{adfFacesContext.postback == true}"
-
- Rank: Programador Júnior
- Mensagens: 20
- Registrado em: Qua, 26 Ago 2009 7:43 pm
- Localização: PR
Fiz isto agora, mas quando é carregado 1ª vez o formulário de cadastro, o médodo do AM não é executado é executado quando percorro o cadastro com o next, previous ou submit, aí ele executa 2 vezes: uma com o valor da iduf do cadastro anterior e outra com valor correspondente e quando executa não fica selecionado o combo e a seguinte mensagem do log:
meu invokeAction:
Atenciosamente,
<FacesCtrlListBinding><getInputValue> ADFv: Não foi possível encontrar o item selecionado correspondente ao valor 1503201 do tipo: oracle.jbo.domain.Number na lista de valores.
<invokeAction id="invokeExecuteWithParams" Binds="procuraciade"
Refresh="ifNeeded"
RefreshCondition="#{adfFacesContext.postback == true}"/>
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:
estou ficando esquecido das coisas rsrsrs...
muda de true para false.. ou então nega a sua expressao atual
muda de true para false.. ou então nega a sua expressao atual
-
- Rank: Programador Júnior
- Mensagens: 20
- Registrado em: Qua, 26 Ago 2009 7:43 pm
- Localização: PR
Sim agora está executando mas porém quando executa o método no AM eu seto o parametro:
as cidades são filtradas mas o combo não vem selecionado e a mensagem do log:
Acho que é algum bug, pois se eu setar o valor do parametro lá mesmo no VO ele traz o valor selecionado, também se eu mandar listar todas as cidades sem usar condição where no VO ele seleciona o combo perfeitamente porém sem o filtro.
Será que temos solução para isso.....
Agradeço,
[/code]
getUfcidade1View1().setNamedWhereClauseParam("idufp",iduf);
<FacesCtrlListBinding><getInputValue> ADFv: Não foi possível encontrar o item selecionado correspondente ao valor 1503201 do tipo: oracle.jbo.domain.Number na lista de valores.
Será que temos solução para isso.....
Agradeço,
[/code]
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:
então..
manda seus componentes de tela completo.
qual o tipo do atributo no VO?
manda seus componentes de tela completo.
qual o tipo do atributo no VO?
-
- Rank: Programador Júnior
- Mensagens: 20
- Registrado em: Qua, 26 Ago 2009 7:43 pm
- Localização: PR
Então se faço o combo como abaixo filtra as cidades e seleciona a cidade mas seleciona a cidade errada, pois seleciona conforme a sequencia do combo, exemplo cadastrado cidade 3 seleciona o 4 campo do combo pois começa com 0.
Se faço através de um forEach como abaixo o combo filtra e não fica selecionado e vejo pelo codigo html gerado fica com valor de sequencia começando do 0 o idcidade.
Erro:
Código:
Agradeço,
[/code]
<af:selectOneChoice value="#{bindings.Cidadeid1.inputValue}"
label="#{bindings.Ufcidade1View1.label}"
shortDesc="#{bindings.Ufcidade1View1.hints.tooltip}"
binding="#{backingBeanScope.backing_teste.soc3}"
id="soc3" partialTriggers="cb3">
<f:selectItems value="#{bindings.Ufcidade1View1.items}"
binding="#{backingBeanScope.backing_teste.si4}"
id="si4"/>
</af:selectOneChoice>
No Def
<list IterBinding="Ufcidade1View1Iterator" ListOperMode="navigation"
ListIter="Ufcidade1View1Iterator" id="Ufcidade1View1"
DTSupportsMRU="true">
<AttrNames>
<Item Value="Nomecidade"/>
</AttrNames>
</list>
Erro:
<FacesCtrlListBinding><getInputValue> ADFv: Não foi possível encontrar o item selecionado correspondente ao valor 5 do tipo: oracle.jbo.domain.Number na lista de valores.
<SimpleSelectOneRenderer><_getSelectedIndex> Could not find selected item matching value "5" in RichSelectOneChoice[UIXEditableFacesBeanImpl, id=soc4]
<af:selectOneChoice value="#{bindings.Cidadeid1.inputValue}"
label="#{bindings.Ufcidade1View1.label}"
shortDesc="#{bindings.Ufcidade1View1.hints.tooltip}"
binding="#{backingBeanScope.backing_teste.soc4}"
id="soc4" partialTriggers="cb3">
<af:forEach items="#{bindings.Ufcidade1View11.rangeSet}"
var="row">
<af:selectItem label="#{row.Nomecidade}" id="si14"
value="#{rowa.Idibge}"/>
</af:forEach>
</af:selectOneChoice>
No Def:
<table IterBinding="Ufcidade1View1Iterator" id="Ufcidade1View11">
<AttrNames>
<Item Value="Idibge"/>
<Item Value="Nomecidade"/>
</AttrNames>
</table>
[/code]
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:
não to entendendo... explica melhor a sua estrutura
teria duas formas:
você tem uma tela de cadastro com n informacoes para serem salvas
2 delas são UF e cidade.. nesse caso ao abrir o registro você não precisaria filtrar a segunda combo pois o registro uma vez salvo seria exibido na tela
você disse...
tipo assim..
AlunoVO -> Nome, matricula, UF e Cidade
Um aluno tem uma cidade.. logo você precisa ter um campo na tabela aluno para guardar a cidade.. então o que você deve fazer.. criar uma tabela para cidades e dai construir um VO para essa tabela...
no seu componente de tela você vai usar o value do campo cidade do VO de aluno.. e no seu foreach você vai usar a listagem do CidadesVO
acho q você não tera problemas assim..
se você continuar na duvida.. me comunique que eu faço um projeto de exemplo para você..
teria duas formas:
você tem uma tela de cadastro com n informacoes para serem salvas
2 delas são UF e cidade.. nesse caso ao abrir o registro você não precisaria filtrar a segunda combo pois o registro uma vez salvo seria exibido na tela
você disse...
qual a entidade principal da tela desse cadastro?o problema é quando fazer uma alteração do cadastro em que preciso que a UF e a cidades venham já selecionada conforme o banco
tipo assim..
AlunoVO -> Nome, matricula, UF e Cidade
Um aluno tem uma cidade.. logo você precisa ter um campo na tabela aluno para guardar a cidade.. então o que você deve fazer.. criar uma tabela para cidades e dai construir um VO para essa tabela...
no seu componente de tela você vai usar o value do campo cidade do VO de aluno.. e no seu foreach você vai usar a listagem do CidadesVO
acho q você não tera problemas assim..
se você continuar na duvida.. me comunique que eu faço um projeto de exemplo para você..
-
- Rank: Programador Júnior
- Mensagens: 20
- Registrado em: Qua, 26 Ago 2009 7:43 pm
- Localização: PR
está então:
Você diz:
Você diz:
Você diz:
Agradeço,
Você diz:
Sim concordo vai listar Todas as cidades no combo pois realmente tenho uma tabela cidade que faz referencia ao meu cadastro de pessoa e se por exemplo abrir o cadastro de pessoa poderei selecionar uma cidade do estado não correspondente. e se executo o método do AM para filtrar ele não traz os valores no combo.você tem uma tela de cadastro com n informacoes para serem salvas
2 delas são UF e cidade.. nesse caso ao abrir o registro você não precisaria filtrar a segunda combo pois o registro uma vez salvo seria exibido na tela
Você diz:
Realmente tenho tudo isso e também uma tabela UF com seu VO que também salva o iduf no meu cadastro de aluno no caso.AlunoVO -> Nome, matricula, UF e Cidade
Um aluno tem uma cidade.. logo você precisa ter um campo na tabela aluno para guardar a cidade.. então o que você deve fazer.. criar uma tabela para cidades e dai construir um VO para essa tabela...
Você diz:
Sim no meus exemplos uso isso, agora no meu foreach o que eu criou no meu def para ser seus valor de items do meu componente de tala foreach? um table ou list ou iterator, etc?no seu componente de tela você vai usar o value do campo cidade do VO de aluno.. e no seu foreach você vai usar a listagem do CidadesVO
Agradeço,
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:
eu não to entendendo pelo seguinte
se isso.. no seu forEach
é igual a isso.. no seu selectOneChoice
ele deveria abrir setado com o valor do banco
tendeu??
===========
escrevendo o post acima vi o seguinte erro:
a variavel para cada linha que você definiu e row e não rowa
veja se vai funcionar
se isso.. no seu forEach
value="#{rowa.Idibge}"
value="#{bindings.Cidadeid1.inputValue}"
tendeu??
===========
escrevendo o post acima vi o seguinte erro:
rowa.Idibge
veja se vai funcionar
-
- Rank: Programador Júnior
- Mensagens: 20
- Registrado em: Qua, 26 Ago 2009 7:43 pm
- Localização: PR
Victor:
Realmente no meu forEach estava com o valor errado agora só alterei e graças funcionou, outro erro que estava fazendo em alguns testes também era que em value="#{bindings.Cidadeid1.inputValue}" onde Cidade1.inputValue era um list que foi gerado quando arrastei os componentes e não o valor propriamente da referencia do banco cidadeid.
Muito agradeçido mesmo, te devo mais esta... fique em paz.
Rohling
Realmente no meu forEach estava com o valor errado agora só alterei e graças funcionou, outro erro que estava fazendo em alguns testes também era que em value="#{bindings.Cidadeid1.inputValue}" onde Cidade1.inputValue era um list que foi gerado quando arrastei os componentes e não o valor propriamente da referencia do banco cidadeid.
Muito agradeçido mesmo, te devo mais esta... fique em paz.
Rohling
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:
o interessante deste recurso de arrastar o componente direto da aba de modelo e a criação dos componentes la no pageDef porem na tela você não pode abrir mao de programar..
Eu e que agradeco a sua participação.
fica na paz irmao
Eu e que agradeco a sua participação.
fica na paz irmao
-
- Rank: Programador Júnior
- Mensagens: 20
- Registrado em: Qua, 26 Ago 2009 7:43 pm
- Localização: PR
Minha saga de componente selecionado continua.... agora é com um selectManyCheckbox que pode ter vários objetos selecionados. Listo todas as opções de seleção de uma tabela Tipodeficiencia, Realizo o filtros em uma tabela associativa onde possui o id da pessoa e o id do tipodeficiencia. Porém não sei qual valor usar para o atributo value= do af:selectManyCheckbox da minha apresentação para ficar os itens selecioados.... alguém tem alguma luz?
Atenciosamente,
<af:selectManyCheckbox value=???? Aqui list, table, etc. do meu def..
label="#{bindings.TipodeficienciaView1_1.label}"
binding="#{backingBeanScope.backing_cadastro_beneficiario.smc1}"
id="smc1">
<af:forEach items="#{bindings.TipodeficienciaView1_11.rangeSet}"
var="row">
<af:selectItem label="#{row.Tipodeficiencia}" id="si13"
value="#{row.Idtipodeficiencia}"/>
</af:forEach>
</af:selectManyCheckbox>
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:
eu nunca trabalhei com esse componente..
faça aValue la no seu bean assim..
isso e para descobrir como o componente funciona ne.. tem q saber o que ele espera.. dai e so você popular do seu jeito dinamicamente
<af:selectManyCheckbox value="#{bean.aValue}" required="yes">
<f:selectItem itemLabel="Option1" itemValue="1"/>
<f:selectItem itemLabel="Option2" itemValue="2"/>
<f:selectItem itemLabel="Option3" itemValue="3"/>
<f:selectItem itemLabel="Option4" itemValue="4"/>
</af:selectManyCheckbox>
//Coloca dentro do seu getAValue()
List aValue = new ArrayList();
aValue.add("1");
aValue.add("3");
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 6 visitantes