DepartamentoManager editar arquivo

0:00 / 0:00

Última edição da sequência CREATE. Quatro linhas regAction no config() pra registrar o Form e suas inner classes. Sem essas linhas, o framework não enxerga os setores e qualquer clique no formulário daria "setor não encontrado".

CÓDIGO COMPLETO
package br.xt.app.departamento;

// ADICIONAR
import br.xt.app.departamento.produto.DepartamentoProdutoForm;
// FIM
import br.xt.app.departamento.produto.DepartamentoProdutoList;
import br.xt.app.painel.PnlManager;

public class DepartamentoManager extends PnlManager {

    public static final String F_ACESSO_MODULO = "XT.PAINEL_CONTROLE.ACESSO_MODULO.DEPARTAMENTO";

    @Override
    public void config() throws Exception {

        regFun("PAINEL DE CONTROLE", "Acesso ao Módulo", "DEPARTAMENTO", F_ACESSO_MODULO);

        regAction(DepartamentoHome.class);
        regAction(DepartamentoHome.Title.class);
        regAction(DepartamentoHome.MenuItem.class);
        regAction(DepartamentoHome.MenuInicial.class);

        regAction(DepartamentoProdutoList.class);
        regAction(DepartamentoProdutoList.DeleteFromList.class);

        // ADICIONAR
        regAction(DepartamentoProdutoForm.class);
        regAction(DepartamentoProdutoForm.ShowInsert.class);
        regAction(DepartamentoProdutoForm.Insert.class);
        regAction(DepartamentoProdutoForm.Cancelar.class);
        // FIM

    }
}

Mudanças nesta sequência: 1 import novo e 4 linhas regAction (verde). Tudo o mais já existia das sequências anteriores.

Por que 4 regAction e não 1?

Cada inner class é, em runtime, uma classe Java separada. O framework não "descobre" automaticamente as inner classes de uma action — cada uma precisa da sua própria linha regAction:

regActionClasseAcionada quando
1DepartamentoProdutoFormClasse base (fallback, chamada direta)
2ShowInsertClique em "Novo Registro" na lista
3InsertClique em "Salvar" no form
4CancelarClique em "Cancelar" no form

Se o regAction do Insert estivesse faltando, o usuário preencheria o form, clicaria Salvar, e receberia erro — o request chegaria mas o framework não encontraria o setor.

Organização — agrupamento por arquivo

Observe como os regAction estão organizados por arquivo-fonte, com linha em branco separando cada grupo:

// DepartamentoHome (4 classes)
regAction(DepartamentoHome.class);
regAction(DepartamentoHome.Title.class);
regAction(DepartamentoHome.MenuItem.class);
regAction(DepartamentoHome.MenuInicial.class);

// DepartamentoProdutoList (2 classes)
regAction(DepartamentoProdutoList.class);
regAction(DepartamentoProdutoList.DeleteFromList.class);

// DepartamentoProdutoForm (4 classes)
regAction(DepartamentoProdutoForm.class);
regAction(DepartamentoProdutoForm.ShowInsert.class);
regAction(DepartamentoProdutoForm.Insert.class);
regAction(DepartamentoProdutoForm.Cancelar.class);

Essa organização facilita saber quantos setores cada arquivo contribuiu. Na sequência UPDATE, o bloco do Form vai crescer com ShowUpdate, Update e Delete.

Encerramento — sequência CRUD CREATE completa

Com estas linhas, a sequência CRUD CREATE está pronta:

ArquivoTipoEdição
DepartamentoProdutoDAOeditarMétodo daoInsert (1 linha)
DepartamentoProdutoModeleditarWrapper insert(bean) (1 linha)
DepartamentoProdutoActioneditarMétodo proBean() com getInstance
DepartamentoProdutoFormnovoFormulário completo: 4 campos, 3 inner classes, render/window/form/br
DepartamentoProdutoListeditarBotão "Novo Registro" + br() + ModalConfig
DepartamentoManagereditar1 import + 4 regAction

Cinco arquivos editados, um arquivo novo. Resultado: a tela de listagem agora tem um botão que abre formulário de cadastro, salva no banco e atualiza a lista automaticamente.

Próxima sequência: CRUD UPDATE — editar produtos existentes e excluir pelo formulário.