Habilitar/desabilitar campos com jsf

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á

&lt;p:selectManyCheckBox&gt;
     &lt;f:ajax event="change" process="@this" /&gt;
&lt;/p:selectManyCheckBox&gt;

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?