Poderia explicar melhor, sou expert nos bugs do JSF!!!
Pelo que entendi, vc ta perdendo o valores de um campo readonly. Tudo bem. Se o campo é readonly, como vc conseguiu inserir o valor?
O outro caso faz sentido, seu mgrBean está populando as informações hardcode!!!
Cara, se o campo não for readonly e vc setou e valor na página e processou com um CommandLink ou CommandButton, verifique se o immediate está setado com true.
O campo read-only eh populado atraves de uma LOV (list of values).
Por exemplo: existe um cadastro de cidades onde sao informados o codigo e o nome da cidade. Existe tambem um cadastro de colaboradores onde eh preciso informar a cidade de nascimento do colaborador. Este cadastro tem dois campos com informacoes referentes a cidade. Um editavel destinado ao codigo e outro, readonly, destinado ao nome.
A cidade pode ser informada de duas formas. Uma delas eh digitar diretamente o codigo da cidade, neste caso o nome sera preenchido no campo readoly via DWR. Outra forma seria abrir a LOV e encontrar a cidade desejada na lista, entao ao clicar sobre o registro da cidade desejada os valores do codigo e nome seriam setados para os respectivos campos via javascript.
Os cadastros estao funcionando corretamente conforme o cenario descrito acima. Porem no backing bean os campos readonly possuem valor null e não o valor da tela.
Deixo aqui registrado para a posteridade o que encontrei sobre o problema descrito e a solucao adotada. Pelo que encontrei na net, JSF realmente nao recupera do lado do server os valores de campos disabled (ateh ai tudo bem pq eh o comportamento html padrao) e nem readonly (ai eh que ferrou a nossa vida):
“…for security considerations, the JSF engine doesn’t take over disabled
or readOnly attributes to the server, it was a bug that we did…”
(http://mail-archives.apache.org/mod_mbox/myfaces-users/200603.mbox/<SAAB5kXNMLyaZkP76jb000009af@saab.corp.muranosoft.com>)
Pra mim o bug esta no que eles julgam ser a correcao do mesmo, mas fazer o que…
Outra coisa que descobri eh que caso o campo nao seja readonly e depois o mesmo seja modificado para reaonly via javascript seus valores sao recuperados pelo servidor. Espero que nao descubram esse “bug” pois foi com base nele que solucionei o problema.
Como a solucao sugerida no forum da Sun jah eh Pog resolvi adotar outro mais pratico, criei a funcao javascript abaixo e adicionei ao body de todas as minhas telas o onload=“javascript:setReadonly()”.
function setReadonly() {
for (i=0; i<document.forms.length; i++) {
for (j=0; j<document.forms[i].elements.length; j++) {
// "input-readonly" eh o estilo css utilizados em todos os campos read-only
if (document.forms[i].elements[j].className == 'input-readonly') {
document.forms[i].elements[j].readOnly = true;
}
}
}
}