tirq
Maio 19, 2011, 3:39pm
#1
Ola,
sou inicante em jsf1.2, uso ibatis e spring richFaces3.3.
tenho um cadastro de contatos com combo estado e combo cidade.
1° seleciona estado e por ajax eu populo o cidade, até ai OK
tudo funcionando corretamente (salva no banco e tudo mais.)
Mas ai decidi colocar esta tag em meu combo cidade
disabled="#{agendaContatoBean.contato.cidade.estado.cod == 0}"
afim de só mostrar o combo cidade qdo fosse selecionado um estado, ai quando submeto a ação de salvar, meu combo cidade que antes funcionava, agora não seta valor.
disabled é bugado ou o que?
Acredito que quando o atributo disabled for true, o faces não irá submete-lo.
Quando você seleciona um estado, você está foçando o reRender ???
[]'s
tirq
Maio 19, 2011, 3:49pm
#3
sim, para atualizar o combo cidade.
WRYEL
Maio 19, 2011, 3:57pm
#4
isso é da especificação do html/browser(?) e não do jsf em si, quando um campo input está marcado como disabled, o browser não envia na requisição dele seus valores, aqui tem um exemplo:
http://www.htmlcodetutorial.com/forms/_INPUT_DISABLED.html
teste fazer assim no jsf (richfaces components):
rendered="#{agendaContatoBean.contato.cidade.estado.cod != 0}"
[]'s
então a nível de teste, no lugar do disabled, verifique se dá para utilizar readonly.
Ja tive problemas com esses disabled, e era exatamente o que ocorre com você, quando submetia o form … esse valor não ia …
logo tive que usar readonly, e deixar o componente “cinza” via CSS mesmo …
[]'s
tirq
Maio 20, 2011, 7:07am
#6
então,
tentei com a rendered, e com readonly,
o funcionamento deles está bom, só abilitando o combo qdo estado for escolhido.OK
mas quando submeto este cadastro com meu botão ajax, ele perde o dado recolhido no combo de cidade.
tirq
Maio 20, 2011, 7:18am
#7
Mas, quando tiro esta tag de renderer ou readonly,ou disabled.
em efeito de teste, tudo funciona perfeitamente.
Como você está utilizando o a4j:commandButtom ?? você está utilizando ajaxSingle=“true” ???
mostre como esta a pagina …
[]'s
tirq
Maio 20, 2011, 7:48am
#9
<a4j:commandButton action="#{agendaContatoBean.incluirContato}"
value="OK" reRender="cadastro,tabela,pag" type="submit" />
Tipo, seu objeto Cidade dentro do seu Bean, está nulo ?? é isso ??
ou ele “retira” a cidade escolhida no combo, voltando para o estado inicial ??
tem como postar a pagina inteira ??
[]'s
tirq
Maio 20, 2011, 8:51am
#11
resolvi o problema do dado nulo, era falha minha :oops:
Agora vi que o problema da validação do combo estado. quando seto ele para zero na minha validação,
ai o combo cidade não recebe a mudança porque a validação barra.
tirei a validação do estado e funciona.
Mas preciso da validação.
Mas tudo bem. Valeu pelas dicas.
[code]
<?xml version="1.0" encoding="iso-8859-1"?>
<ui:define name="corpo">
<h:form>
<rich:panel styleClass="wizard" style="width: 500px"
header="Cadastro">
<h:panelGrid columns="2" id="cadastro">
<h:outputText value="Nome: " />
<h:panelGroup>
<h:inputText value="#{agendaContatoBean.contato.nome}"
required="true" id="name" label="nome" />
<h:message for="name" showSummary="true" showDetail="false" />
</h:panelGroup>
<h:outputText value="Endereço: " />
<h:panelGroup>
<h:inputText value="#{agendaContatoBean.contato.endereco}"
required="true" id="end" label="Endereço" />
<h:message for="end" showSummary="true" showDetail="false" />
</h:panelGroup>
<h:outputText value="Sexo: " />
<h:panelGroup>
<h:selectOneRadio value="#{agendaContatoBean.contato.sexo}"
id="sex" required="true" label="sexo">
<f:selectItem itemValue="Feminino" itemLabel="Feminino" />
<f:selectItem itemValue="Masculino" itemLabel="Masculino" />
</h:selectOneRadio>
<h:message for="sex" showSummary="true" showDetail="false" />
</h:panelGroup>
<h:outputText value="Assuntos de interesse: " />
<h:panelGroup>
<h:selectManyCheckbox id="pref">
<f:selectItem itemValue="1" itemLabel="Esporte" />
<f:selectItem itemValue="2" itemLabel="Tecnologia" />
<f:selectItem itemValue="3" itemLabel="Musica" />
</h:selectManyCheckbox>
</h:panelGroup>
<h:outputText value="Estado:" />
<h:panelGroup id="cb_estado">
<h:selectOneMenu
value="#{agendaContatoBean.contato.cidade.estado.cod}"
id="combo_estado" required="true" label="Estado">
<a4j:support event="onchange"
action="${agendaContatoBean.estadoSelecionado}"
ajaxSingle="true" reRender="cb_cidade" />
<f:selectItems value="#{agendaContatoBean.selectEstado}" />
</h:selectOneMenu>
<rich:message for="combo_estado" />
</h:panelGroup>
<h:outputText value="Cidade:" />
<h:panelGroup id="cb_cidade">
<h:selectOneMenu value="#{agendaContatoBean.contato.cidade.id}"
id="combo_cidade" required="true" label="Cidade"
rendered="#{agendaContatoBean.contato.cidade.estado.cod != 0}">
<f:selectItems value="#{agendaContatoBean.selectCidade}" />
<f:validateLongRange minimum="1" />
</h:selectOneMenu>
<rich:message for="combo_cidade" />
</h:panelGroup>
<h:outputText />
<h:panelGroup>
<a4j:commandButton action="#{agendaContatoBean.incluirContato}"
value="OK" reRender="cadastro,tabela,pag" type="submit" />
</h:panelGroup>
</h:panelGrid>
</rich:panel>
</h:form>
<h:form>
<rich:dataTable var="obj" value="#{agendaContatoBean.contatos}"
id="tabela" width="50%" rows="3"
onRowMouseOver="this.style.backgroundColor='#F8F8F8'"
onRowMouseOut="this.style.backgroundColor='white'">
<rich:column sortBy="#{obj.nome}" style="text-align:center">
<f:facet name="header">
<h:outputText value="Nome" />
</f:facet>
<h:outputText value="#{obj.nome}" />
</rich:column>
<rich:column sortBy="#{obj.endereco}" style="text-align:left">
<f:facet name="header">
<h:outputText value="Endereço" />
</f:facet>
<h:outputText value="#{obj.endereco}" />
</rich:column>
<rich:column sortBy="#{obj.sexo}" style="text-align:right">
<f:facet name="header">
<h:outputText value="Sexo" />
</f:facet>
<h:outputText value="#{obj.sexo}" />
</rich:column>
<rich:column sortBy="#{obj.cidade.nome}" style="text-align:right">
<f:facet name="header">
<h:outputText value="Cidade" />
</f:facet>
<h:outputText value="#{obj.cidade.nome}" />
</rich:column>
<rich:column style="text-align:center">
<f:facet name="header">
<h:outputText value="Excluir" />
</f:facet>
<a4j:commandLink id="delete"
oncomplete="#{rich:component('panel')}.show();" immediate="true">
<h:graphicImage value="img/close.jpg" styleClass="hidelink" />
<a4j:actionparam name="codigo" value="#{obj.id}"
assignTo="#{agendaContatoBean.parametro}" />
</a4j:commandLink>
</rich:column>
<rich:column style="text-align:center">
<f:facet name="header">
<h:outputText value="Alterar" />
</f:facet>
<a4j:commandLink id="altera" reRender="cadastro"
action="#{agendaContatoBean.popular}" immediate="true">
<h:graphicImage value="img/editar.png" styleClass="hidelink" />
<a4j:actionparam name="cod" value="#{obj.id}"
assignTo="#{agendaContatoBean.parametro}" />
</a4j:commandLink>
</rich:column>
</rich:dataTable>
<rich:datascroller for="tabela" maxPages="20" align="left" id="pag" />
</h:form>
<rich:modalPanel id="panel" width="200" height="70">
<f:facet name="header">
<h:outputText value="limpar Tabela" />
</f:facet>
<f:facet name="controls">
<h:panelGroup>
<h:form>
<h:graphicImage value="img/close.jpg" id="close"
styleClass="hidelink" />
<rich:componentControl attachTo="close" event="onclick"
for="panel" operation="hide" />
</h:form>
</h:panelGroup>
</f:facet>
<h:panelGrid columns="1">
<h:outputText value="Deseja remover os dados?" />
<h:panelGroup>
<h:form>
<a4j:commandButton value="sim" id="sim"
oncomplete="#{rich:component('panel')}.hide();"
action="#{agendaContatoBean.remove}" reRender="tabela,pag" />
<a4j:commandButton value="não" id="nao" />
<rich:componentControl attachTo="nao" event="onclick" for="panel"
operation="hide" />
</h:form>
</h:panelGroup>
</h:panelGrid>
</rich:modalPanel>
</ui:define>
</ui:composition>
[/code]
alex.brito, claro é aprendizado ainda. ai está
Valeu
Beleza, então tá resolvido ?? ou falta o lance da validacao ??
se tiver resolvido, coloque um [RESOLVIDO] no titulo do topico…
a comunidade agradece …
Vlw mano, até a proxima
[]'s