["Resolvido"]Método disabled com defeito RichFaces/JSF

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

sim, para atualizar o combo cidade.

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

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.

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

<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

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