Habilitar/desabilitar campos com jsf

12 respostas
T

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á

12 Respostas

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

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

T

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

T

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}" />

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!

T

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?

Tiburcio_Mancha:
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}" />

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!

T

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!!!

T

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!!!

vou testa aqui, valeu por enquanto

T

crir um atributo checkBox

eu posso ela no itemValue?

T

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>
private Integer atributo;

public void selectOpcao(){

if(atributo==1)
disabledInput = true;
disabledInput = false;
}else
disabledInput = false;
disabledInput = true;
}
T

desse jeito não dá pq não tem com armazenar 2 objeto estando declarado como int

to testando com list

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>
private Integer atributo;

public void selectOpcao(){

if(atributo==1)
disabledInput = true;
disabledInput = false;
}else
disabledInput = false;
disabledInput = true;
}
E

Boa noite tmvolpato

você já resolveu o seu problema?

V

Estou com esse mesmo problema, alguém pode me ajudar?

Criado 8 de agosto de 2012
Ultima resposta 31 de jan. de 2013
Respostas 12
Participantes 5