[RESOLVIDO] jsf <h:inputText desabilitar sem usar disabled="true"

Olá.

Eu tenho uma parte de editar um registro que traz por exemplo o id e nome.
Na página eu tenho

<h:inputText value="#{meuBean.objeto.id}"/>
<h:inputText value="#{meuBean.objeto.nome}"/>

e um botao que chama o método salvar…

o problema é o seguinte: o inputText ja vem com os valores carregados, quando eu clico em Editar.
Porém eu preciso desabilitar o inputText do id, pro cara num editar…
porém se eu usar o disabled=“true” ele nao passa pro bean o valor que ja veio carregado…
como eu faço pra mostrar ele e não dexa o cara edita?

use a propriedade rendered, mais ou menos assim:

rendered="#{not empty meuBean.objeto.id}"

Ai quando vc carregar, atualiza o form, ou o h:inputText para ele sumir…

[]'s

em vez de aparecer o código do id, exemplo: 1, 3, 10 ou sei lá…
apareceu: true

rsrs… a intenção é aparecer o numero normal, o id… + nao deixar editar…

<h:inputText value="#{meuBean.objeto.id}"  rendered="#{not empty meuBean.objeto.id}"  /> 

Você colocou assim?

Utilize o atributo readonly=“true” no h:inputText

Espero ter ajudado

testei aki e num deu certo :frowning:
na verdade aconteceu a mesma coisa que acontece com o disabled=“true”
ele cria um registro novo no banco, em vez de editar o selecionado…
ferro :frowning:

Usando disabled ou readonly, o JSF vai considerar aquele elemento como somente visualização, ou seja, não irá junto com o submit do form.

Usando rendered é pior ainda, pois nem na tela aparecerá.

Esse é o padrão no JSF.

Existem dois jeitos pra fazer o que você quer:

  1. Colocar duas tags:
<h:inputHidden value="#{bean.id}" />
<h:inputText disabled="true" value="#{bean.id}" />
  1. Fazer o campo readonly via javascript.

Escolha a que achar melhor pra você.

PS: o titulo do topico está pessimo. Parece que você não está colocando o disabled=“true” mas o campo aparece disabilitado em tela…

Obrigado a todos que responderam…

Guilherme Gomes especialmente, muito obrigado.

1° arrumei o titulo do tópico

2° resolvi da seguinte forma

  • um inputText com o disabled=“true” só pra informar ao usuário o código (id)
  • e um inputHidden, pra enviar o id no form

:smiley: thanx very much rsrs