Actions Futurepages

Action é a classe que representa um caso de uso. Recebe as entradas enviadas pelo usuário (input), realiza um processo ao um fim retorna um resultado (output) para a consequência retornada.

  • Toda classe que herda de org.futurepages.core.action.AbstractAction
  • possui:
    • os atributos input e output.
    • O método que retorna o usuário logado: DefaultUser loggedUser()
  • pode implementar:
    • DynAction (Action Dinâmica)
    • AjaxAction (Action Ajax)

Padronização

Ações Simples

Estas são as ações que representam casos de uso simples (NÃO-CRUDs). LoginAction, ProtectedAction e FreeAction. Recomenda-se que para estas actions sejam usados um a dois métodos públicos, dependendo do caso.

 
public class SelecionaTurma extends FreeAction {
 
    /** O método execute() como mostrado a seguir já existe na hierarquia das Actions do Futurepages,
      * sendo desnecessário, já que sobrescreve o método execute() da classe FreeAction com a mesma implementação.
      * Nesse caso bastaria somente sobrescrever o método listDependencies()
      */
    public String execute() {
        listDependencies();//joga na saída as dependências de tela, neste caso a lista de todas as turmas.
        return SUCCESS;
    }
 
    @Override
    private void listDependencies() {
        output.setValue("turmas", Dao.list(Turma.class, null, null));
    }
 
    //Submete a principal funcionalidade da Action.
    public String submit(int turmaId) {
        TurmaServices.selecionaTurma(Dao.get(Turma.class, turmaId));
        return SUCCESS;
    }
}
  • Nos casos onde não existe a necessidade de um carregamento de um formulário preliminar, deve existir somente o método público execute() onde será executado o caso de uso. Um exemplo seria uma action de Logout onde somente clicamos num link para executá-lo.
   <a href="Logout.fpg">Realizar Logout</a>
 
   <a href="SelecionaTurma.fpg">Selecionar Turma</a>
 
   <form action="SelecionaTurma.submit.fpg">
     ...
   </form>
  • O nome dessas actions deve denotar seu caso de uso, geralmente seguem o padrão “FazAlgumaCoisa” ou um apelido que denota a ação.
    • Exemplos: LiberaUsuario, AlteraSenha, Login, Logout, DistribuiProcesso.
  • O mapeamento dessas actions no ModuleManager será o mesmo nome da classe:
    action("AlteraSenha",AlteraSenha.class);
    action(DistribuiProcesso.class); //opção que pega o nome por reflexão
 

Ações CRUD (CrudActions)

  • As CrudActions podem ser ProtectedCrudActions ou FreeCrudActions, elas são actions especiais que contemplam o CRUD básico de Beans.
  • Nome Padrão: BeanActions Nome do Bean seguido de “Actions”.
  • Mapeamento do ModuleManager: É suprimido o nome “Actions”
    action("Aluno",AlunoActions.class); //Action de Crud do bean Aluno
         .filter(new VOFilter("aluno", Aluno.class))
            .on(UPDATE, fwIn("Aluno.update.page"))
                .on(SUCCESS, UPDATE, fwIn("Aluno.update.page"))
                .on(ERROR,   UPDATE, fwIn("Aluno.update.page"))
         ;
 
  • Desta forma para exibir um aluno cuja matrícula é 9090 o usuário solicitaria Aluno.fpg?matricula=9090
  • Para abrir tela de alteração deste mesmo aluno teríamos: Aluno.fpg?type=update&matricula=9090
  • Para submeter a tela de atualização teríamos o seguinte trecho de código:
    <form action="Aluno.update.fpg">
      ...
    </form>
 

AjaxAction

em breve...

DynAction

em breve...
 
/var/www/html/wiki/data/pages/futurepages2/actions.txt · Última modificação: 2010/05/15 22:36 (edição externa)
 
Exceto onde for informado ao contrário, o conteúdo neste wiki está sob a seguinte licença:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki