Dúvidas sobre <p: button> em páginas .xhtml

Olá, pessoal. Estou com dificuldades em um programa que estou montando atualmente: Neste programa, há uma tela de pesquisa de usuários cadastrados. Ao mesmo tempo que serão mostrados os dados dos usuários, cada registro possuirá dois botões, um para “bloquear” este cadastro e outro para abrir uma tela para editar os dados deste cadastro.

No momento eu tenho a seguinte ideia: quando o cadastro for bloqueado, o usuário não poderá mais editar os dados contidos neste registro, ou seja, caso o cadastro esteja bloqueado, o botão “editar” deve ser desabilitado. Mas com o método que estou utilizando, se existir um registro no meio de todos com o status “bloqueado”, todos os botões “editar” de todos os registros estão sendo desabilitados. Eu quero que seja desabilitado somente o botão “editar” do registro que esteja com o cadastro bloqueado.
Abaixo está o meu arquivo .xhtml e arquivo Bean.

MEU ARQUIVO .XHTML

<ui:composition template="/WEB-INF/template/LayoutPadrao.xhtml"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h ="http://java.sun.com/jsf/html"
    xmlns:f ="http://java.sun.com/jsf/core"
    xmlns:ui ="http://java.sun.com/jsf/facelets"
    xmlns:p ="http://primefaces.org/ui">
    
    <ui:define name="titulo">Pesquisar Usuarios</ui:define>
    
    <ui:define name="corpo">
        <h:form id="frmPesquisa">
        <p:messages showDetail="false" showSummary="true" autoUpdate="true" />
        
        <h1>Pesquisa de usuários</h1>
        
        <p:toolbar style="margin-top: 20px">
            <p:toolbarGroup>
                <p:commandButton value="Pesquisar" action="#{pesquisaUsuarioBean.pesquisar}" update="@form" />
            </p:toolbarGroup>
            <p:toolbarGroup align ="right">
                <p:button value="Novo" outcome="/usuarios/CadastroUsuario"/>
            </p:toolbarGroup>
        </p:toolbar>
        
        <p:panelGrid columns="2" id="painel" style="width: 100%; margin-top: 20px" 
        columnClasses="rotulo, campo">
            <p:outputLabel value="Nome" for="nome"/>
            <p:inputText id="nome" size="60" maxlength="80"
            value="#{pesquisaUsuarioBean.filtro.nome}"/>
        </p:panelGrid>
        
        <p:dataTable id="usuariosTable"
                value="#{pesquisaUsuarioBean.usuariosFiltrados}" var="usuario"
                style="margin-top: 20px" emptyMessage="Nenhum usuario encontrado."
                rows="20" paginator="true" paginatorAlwaysVisible="false"
                paginatorPosition="bottom">
                
        <p:column headerText="Id" style="text-align: center; width: 100px">
                <h:outputText value="#{usuario.id}" />
        </p:column>
        
        <p:column headerText="Nome" style="text-align: center; width: 100px">
                <h:outputText value="#{usuario.nome}" />
        </p:column>
        
        <p:column headerText="RG" style="text-align: center; width: 100px">
                <h:outputText value="#{usuario.rg}" />
        </p:column>
        
        <p:column headerText="CPF" style="text-align: center; width: 100px">
                <h:outputText value="#{usuario.cpf}" />
        </p:column>
        
        <p:column headerText="Email" style="text-align: center; width: 100px">
                <h:outputText value="#{usuario.email}" />
        </p:column>
        
        <p:column headerText="Telefone" style="text-align: center; width: 100px">
                <h:outputText value="#{usuario.telefone}" />
        </p:column>
        
        <p:column headerText="Endereço" style="text-align: center; width: 100px">
                <h:outputText value="#{usuario.endereco}" />
        </p:column>
        
        <p:column headerText="Estado" style="text-align: center; width: 100px">
                <h:outputText value="#{usuario.estado}" />
        </p:column>
        
        <p:column headerText="CEP" style="text-align: center; width: 100px">
                <h:outputText value="#{usuario.cep}" />
        </p:column>
        
        <p:column headerText="Status" style="text-align: center; width: 100px">
                <h:outputText value="#{usuario.status}" />
        </p:column>
        
        <p:column headerText="Operações" style="width: 100px; text-align: center">
// este é o botão que está em questão
                    <p:button outcome="/usuarios/CadastroUsuario" icon="ui-icon-pencil" title="Editar">
                        <f:param name="usuario" value="#{usuario.id}" />
                    </p:button>
                <p:commandButton icon="ui-icon-bloquear" title="Alterar status do cadastro" oncomplete="PF('confirmacaoExclusao').show()" process="@this" update="frmPesquisa:confirmacaoExclusaoDialog">
                    <f:setPropertyActionListener value="#{usuario}" target="#{pesquisaUsuarioBean.usuarioSelecionado}"/>    
                </p:commandButton>
        </p:column>
        
                
        </p:dataTable>
        
            <p:confirmDialog header="Alterar status do cadastro"
                message="Tem certeza que deseja alterar o status do cadastro do usuário #{pesquisaUsuarioBean.usuarioSelecionado.nome}?"
                widgetVar="confirmacaoExclusao" id="confirmacaoExclusaoDialog">
                <p:button value="Não"
                    onclick="PF('confirmacaoExclusao').hide(); return false;" />
                <p:commandButton value="Sim"
                    oncomplete="PF('confirmacaoExclusao').hide();" action="#{pesquisaUsuarioBean.excluir}" process="@this" update="frmPesquisa:usuariosTable"/>
            </p:confirmDialog>
    </h:form>
    </ui:define>
</ui:composition>    

Neste código, o botão que desejo desabilitar é o botão que está com a anotação “este é o botão que está em questão”


ARQUIVO BEAN

@Named
@ViewScoped
public class PesquisaUsuarioBean implements Serializable{

    private static final long serialVersionUID = 1L;

    @Inject
    private UsuariosRep usuarios;

    private UsuarioFilter filtro;

    private List<Usuario> usuariosFiltrados;

    private Usuario usuarioSelecionado;

    @Inject
    private CadastroUsuarioService cadastroUsuarioService;

    public PesquisaUsuarioBean() {
        filtro = new UsuarioFilter();
    }
    
    public boolean isInativo() {
        boolean inativo = false;
        for (int x = 0;x < this.usuariosFiltrados.size(); x++)
        {
            String ContasInativas = this.usuariosFiltrados.get(x).getStatus();
            if ( ContasInativas.equals("Inativo"))
            {
                inativo = true;
            }
        }
        return inativo;
    }
    
    public String verificarStatus(){
        FacesContext context = FacesContext.getCurrentInstance();
        String status = null;
        if (this.usuarioSelecionado.getStatus().equals("Ativo"))
        {
            status = "/usuarios/CadastroUsuario";
        }
        else
        {
            context.addMessage(null, new FacesMessage("Este usuário está com o cadastro Inativo. Ele não pode ser editado"));
        }
        return status;
    }

    public void excluir() {
        FacesContext context = FacesContext.getCurrentInstance();
        if (this.usuarioSelecionado.getStatus().equals("Ativo"))
        {
            this.usuarioSelecionado.setStatus("Inativo");
        }
        else
        {
            this.usuarioSelecionado.setStatus("Ativo");
        }
        try {
            this.cadastroUsuarioService.salvar(this.usuarioSelecionado);
            context.addMessage(null, new FacesMessage("O status do cadastro do usuário " + usuarioSelecionado.getNome() + " com o CPF : " + usuarioSelecionado.getCpf() + " foi alterado com sucesso."));
        } catch (NegocioException e) {
            FacesMessage mensagem = new FacesMessage(e.getMessage());
            mensagem.setSeverity(FacesMessage.SEVERITY_ERROR);
            context.addMessage(null, mensagem);
        }
    }

    public void pesquisar() {
        usuariosFiltrados = usuarios.filtrados(filtro);
    }

    public List<Usuario> getUsuariosFiltrados() {
        return usuariosFiltrados;
    }

    public UsuariosRep getUsuarios() {
        return usuarios;
    }

    public UsuarioFilter getFiltro() {
        return filtro;
    }

    public Usuario getUsuarioSelecionado() {
        return usuarioSelecionado;
    }

    public void setUsuarioSelecionado(Usuario usuarioSelecionado) {
        this.usuarioSelecionado = usuarioSelecionado;
    }
}

Desde já agradeço qualquer opinião ou sugestão.

Bom dia amigo, então dando uma olhada no seu bean, provavelmente o método que faz essa lógica seria o isInativo(), correto ?
Então, ao invés de ele não receber nenhum parâmetro, você pode passar o id como parâmetro no método isInativo(final Long id) por exemplo, e fazer esse filtro pelo id. E como na view vc já carrega os dados você apenas chama o método passando como parametro o para o mesmo usuario.id.