Boa tarde,
estou com o seguinte problema
para desabilitar os campos inputText
Tenho uma tela com endereço principal
até ai tudo bem, mas caso o endereço de cobrança e entrega for o mesmo de endereço principal a pessoa marca
usando um
<p:selectManyCheckBox> // mas não estou conseguindo pegar o valor selecionado
Alguém poderia me ajuda e se essa é a melhor maneira para se fazer isso
Obrigado desde já
<p:selectManyCheckBox>
<f:ajax event="change" process="@this" />
</p:selectManyCheckBox>
seta o disabled desse campo para um atributo booleano no MB.
Quando o usuário clicar no checkBox, vc faz uma chamada ajax no MB, atualiza o atributo booleano e atualiza o componente.
use o ajax do primefaces, segue um link pra vc da uma olhada!
http://www.primefaces.org/showcase/ui/ajaxifyAction.jsf
nesse selectManyCheckBox
como eu tenho duas opções cobrança e entrega
faço isso
<f:selectItem itemLabel="Cobrança" itemValue="1"/>
<f:selectItem itemLabel="Entrega" itemValue="2"/>
coloco uma chamada ajax, para abilitar ou desabilitar conforme seleção fica ativa
<p:ajax event="change" update="campo1, campo2" listener="#{clienteFace.selectOpcao}" />
como eu faria no bean a comparação para ver se ele selecionou
fiz usando enum
<f:selectItems value="#{clienteFace.endTipoValues}"/>
ele carrega mas na hora da seleção da erro
[quote=tmvolpato]nesse selectManyCheckBox
como eu tenho duas opções cobrança e entrega
faço isso
<f:selectItem itemLabel="Cobrança" itemValue="1"/>
<f:selectItem itemLabel="Entrega" itemValue="2"/>
coloco uma chamada ajax, para abilitar ou desabilitar conforme seleção fica ativa
<p:ajax event="change" update="campo1, campo2" listener="#{clienteFace.selectOpcao}" />
[/quote]
Correto, seu método “selectOpcao” realiza a regra que vai deixar os inputText habilitados ou não.
Como disse, vc cria um atributo booleano no MB para cara inputText, e na view, os inputs possuem um atributo disabled, que vc seta esse valor, fica mais ou menos assim:
<h:inputText value"#{mb.valor}" disabled="#{mb.propriedadeBooleana}"/>
a sua chamada ajax está correta, só falta vc implementar o método no MB e declarar o disabled como falei!
o atributo booleano já está criado
mas o problema está na regra,
como eu saberia que ele selecionou o valor 1 ou 2 e habilitar o campo
sem fazer == 1 ou == 2 no xhtml
fazer essa regra no bean, entendeu?
[quote=Tiburcio_Mancha][quote=tmvolpato]nesse selectManyCheckBox
como eu tenho duas opções cobrança e entrega
faço isso
<f:selectItem itemLabel="Cobrança" itemValue="1"/>
<f:selectItem itemLabel="Entrega" itemValue="2"/>
coloco uma chamada ajax, para abilitar ou desabilitar conforme seleção fica ativa
<p:ajax event="change" update="campo1, campo2" listener="#{clienteFace.selectOpcao}" />
[/quote]
Correto, seu método “selectOpcao” realiza a regra que vai deixar os inputText habilitados ou não.
Como disse, vc cria um atributo booleano no MB para cara inputText, e na view, os inputs possuem um atributo disabled, que vc seta esse valor, fica mais ou menos assim:
<h:inputText value"#{mb.valor}" disabled="#{mb.propriedadeBooleana}"/>
a sua chamada ajax está correta, só falta vc implementar o método no MB e declarar o disabled como falei![/quote]
Cria outro atributo para o o checkBox que receberá 1 ou 2.
Quando o ajax chamar o método, o JSF já vai ter atualizado este atributo, ae if/else resolve tua vida!!!
[quote=Tiburcio_Mancha]Cria outro atributo para o o checkBox que receberá 1 e 2.
Quando o ajax chamar o método, o JSF já vai ter atualizado este atributo, ae if/else resolve tua vida!!![/quote]
vou testa aqui, valeu por enquanto
crir um atributo checkBox
eu posso ela no itemValue?
Não, cria uma String, ou pode ser um Integer tb fica a sua escolha.
fica assim;
<p:selectManyCheckBox value="#{mb.atributo}>
<p:ajax event="change" update="campo1, campo2" listener="#{clienteFace.selectOpcao}" />
<f:selectItem itemLabel="Cobrança" itemValue="1"/>
<f:selectItem itemLabel="Entrega" itemValue="2"/>
</p:selectManyCheckBox>
[code]private Integer atributo;
public void selectOpcao(){
if(atributo==1)
disabledInput = true;
disabledInput = false;
}else
disabledInput = false;
disabledInput = true;
}
[/code]
desse jeito não dá pq não tem com armazenar 2 objeto estando declarado como int
to testando com list
[quote=Tiburcio_Mancha]Não, cria uma String, ou pode ser um Integer tb fica a sua escolha.
fica assim;
<p:selectManyCheckBox value="#{mb.atributo}>
<p:ajax event="change" update="campo1, campo2" listener="#{clienteFace.selectOpcao}" />
<f:selectItem itemLabel="Cobrança" itemValue="1"/>
<f:selectItem itemLabel="Entrega" itemValue="2"/>
</p:selectManyCheckBox>
[code]private Integer atributo;
public void selectOpcao(){
if(atributo==1)
disabledInput = true;
disabledInput = false;
}else
disabledInput = false;
disabledInput = true;
}
[/code][/quote]
Boa noite tmvolpato
você já resolveu o seu problema?
Estou com esse mesmo problema, alguém pode me ajudar?