Passar parâmetro de inputText com atributo readonly

pessoal, tenho o seguinte form para fazer um update

<a4j:form ajaxSubmit="true" id="formUsuario">
   <fieldset>
      &lt;legend&gt;<b>Dados de Acesso ao Sistema</b>&lt;/legend&gt;

         &lt;h:panelGrid columns="4" cellspacing="10"&gt;
            &lt;h:outputLabel id="usuario" for="usuario" value="Login de acesso: " /&gt;
            &lt;h:inputText size="15" value="#{managedBeanUsuario.usuario.login}" readonly="true" /&gt;

            &lt;h:outputLabel id="email" for="email" value="Email: " /&gt;
            &lt;h:inputText size="40" value="#{managedBeanUsuario.usuario.email}" /&gt;

            &lt;h:outputLabel id="perfil" for="perfil" value="Perfil: " /&gt;
            &lt;h:selectOneMenu value="#{managedBeanUsuario.usuario.perfil}" required="true" requiredMessage="Selecione o perfil desejado"&gt;
               &lt;f:selectItem itemLabel="selecione" /&gt;
               &lt;f:selectItems value="#{managedBeanPerfil.lista}" /&gt;
            &lt;/h:selectOneMenu&gt;
         &lt;/h:panelGrid&gt;
   &lt;/fieldset&gt;

   <br />
   &lt;a4j:commandButton value="alterar" action="#{managedBeanUsuario.alterar}" /&gt;
   &lt;a4j:commandButton value="voltar" action="consultaUsuario" immediate="true" /&gt;
   &lt;rich:messages styleClass="msgErro" /&gt;
&lt;/a4j:form&gt;

O que acontece é quando chamo o método alterar do meu bean ele ñ recupera o meu login que está em <h:inputText size=“15” value="#{managedBeanUsuario.usuario.login}" readonly=“true” /> por causa do readonly=“true”

consegui fazer colocando um <h:inputHidden>. Vou ter que fazer assim sempre ou tem uma outra forma?