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

11 respostas
T

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?

11 Respostas

A

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

T

sim, para atualizar o combo cidade.

W

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

A

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

T

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.

T

Mas, quando tiro esta tag de renderer ou readonly,ou disabled.
em efeito de teste, tudo funciona perfeitamente.

A

Como você está utilizando o a4j:commandButtom ?? você está utilizando ajaxSingle=“true” ???

mostre como esta a pagina …

[]'s

T

<a4j:commandButton action="#{agendaContatoBean.incluirContato}" value="OK" reRender="cadastro,tabela,pag" type="submit" />

A

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

T

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.

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<ui:composition template="template.xhtml"
	xmlns="http://www.w3.org/1999/xhtml"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:a4j="http://richfaces.org/a4j"
	xmlns:rich="http://richfaces.org/rich"
	xmlns:ui="http://java.sun.com/jsf/facelets">

	<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>
</html>

alex.brito, claro é aprendizado ainda. ai está
Valeu

A

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

Criado 19 de maio de 2011
Ultima resposta 20 de mai. de 2011
Respostas 11
Participantes 3