Da para ativar/desativar h:inputtext via programacao?

Ola,
Eu estou fazendo um app onde quero funcionar como a seguinte identidade visual:

1 - Quando entrar na pagina, todos os campos inputs estao com a opcao disable=“true”.
2 - No momento que eu aperter o botao cadastrar/alterar ele altera os inputs para disable=“false”

Tem como fazer isso?

Hoje eu tenho isso funcionando mas da forma abaixo:

<p:toolbar>
    <f:facet name="left">
        <p:commandButton value="CADASTRAR" action="#{controller.cadastrar()}" update="@form"/>
        <p:commandButton value="EDITAR" action="#{controller.editar()}" update="@form"/>
        <p:commandButton value="PESQUISAR" onclick="PF('modalPesquisa').show();" />
        <p:commandButton value="CANCELAR" action="#{controller.cancelar()}" update="@form"/>
        <p:commandButton value="SALVAR" action="#{controller.salvar()}" update="@form"/>
        <p:commandButton value="EXLCUIR" action="#{controller.excluir()}" update="@form"/>
    </f:facet>
</p:toolbar>

<h:panelGroup id="visualiza" rendered="#{!controller.edicao}">
    <h:inputText disable="true" value="#{controller.pessoa.nome}"/>
</h:panelGroup>

<h:panelGroup id="editar" rendered="#{controller.edicao}">
        <h:inputText value="#{controller.pessoa.nome}"/>
</h:panelGroup>

@ManagedBean(name="controller")
@ViewScoped
public class BeanController {

    public void cadastrar() {
        pessoa = new Pessoa();
        edicao = true;
    }

    public void editar() {
        edicao = true;
    }

    public void selecionar() {
        pessoa = pessoas.getRowData();
    }
    public void cancelar() {
        pessoa = new Pessoa();
        edicao = false;
    }

    public void salvar() {
        pessoa = service.salvar(pessoa);
        listar();
        edicao = false;
    }

    public void excluir() {
        service.excluir(empresa);
        listar();
    }

    public void listar() {
        pessoas = new ListDataModel<>(service.pesquisar(pesquisa));
    }
}

o problema disso é que quando tenho entidades grandes eu tenho que ficar repetindo todos os atributos no pagina. que fica grande demais.

Por isso quero saber se tem como ao executar a acao do botao, alguma funcao javascript ou do proprio jsf mudar o atributo do campo disable de true para false.

No lugar de usar um h:panelGroup com um atributo rendered, eu usei esse atributo no campo disabled do h:inputText e ficou da forma que queria.

<h:panelGroup id="visualiza" rendered="#{!controller.edicao}">
    <h:inputText id="nome" value="#{controller.pessoa.nome}"  disabled="true"/>
</h:panelGroup>


<h:panelGroup id="visualiza" rendered="#{controller.edicao}">
    <h:inputText id="nome" value="#{controller.pessoa.nome}" />
</h:panelGroup>

<!-- Eu usei assim em todos os campos de input, selectOneMenu, etc... -->
<h:inputText id="nome" value="#{controller.pessoa.nome}"  disabled="#{!controller.edicao}"/>