-
Notifications
You must be signed in to change notification settings - Fork 3
Controller
Para facilitar o desenvolvimento das controladoras, foi desenvolvida a classe abstrata Controller, que possui uma série de métodos facilitadores.
Para utilizá-la basta que sua controladora estenda a classe Controller:
public class ListarPessoasController extends ControllerAo estender a classe Controller sua controladora poderá usufruir de métodos facilitadores como:
- Método invocado quando uma view é iniciada (sobrescreva!)
/**
* Acao invocada sempre que a tela for iniciada.
* Retorne nulo para seguir para a tela ou retorne uma viewId para redirecionar para outra tela
* @return
*/
@RequestAction
@Deferred
@IgnorePostback
public String requestAction()- Métodos para serem utilizados nas views
/**
* Util para saber se a controladora ja foi inicializada.
* Voce devera informar a inicializacao manualmente
* @return
*/
public boolean isInitialized()
/**
* Comparacao de strings com ignore case, util para dataTables com sort
* @param obj1
* @param obj2
* @return
*/
public int sortIgnoreCase(Object obj1, Object obj2)
/**
* Filtro de dados ignorando o caso, util para dataTables
* @param value
* @param filter
* @param locale
* @return
*/
public boolean filterIgnoreCase(Object value, Object filter, Locale locale)
/**
* Metodo para ser utilizado em acoes de cancelamento que exigem a limpeza de um form.
* Realiza, assim, a limpeza completa na arvore de componentes do JSF, do form que o botao se encontra.
* @param event
*/
public void resetForm(ActionEvent event)- Métodos auxiliares para serem utilizados na controladora
/**
* Retorna a referencia do FacesContext.
* @return FacesContext
*/
protected FacesContext getContext()
/**
* Retorna a referencia do FacesContext.
* @return ExternalContext
*/
protected ExternalContext getExternalContext()
/**
* Retorna a referencia para o HttpServletResponse atual.
* @return HttpServletResponse
*/
protected HttpServletResponse getResponse()
/**
* Retorna a referencia para o HttpServletRequest atual.
* @return HttpServletRequest
*/
protected HttpServletRequest getRequest()
/**
* Retorna a instancia atual do contexto ServletContext.
* @return ServletContext
*/
protected ServletContext getServletContext()
/**
* Retorna um parametro do Request HTTP (HttpServletRequest) sob a chave 'name'.
* @param name - chave do parametro no Request HTTP
* @return String - parametro do Request HTTP sob a chave 'name'
*/
protected String getParameter(String name)
/**
* Retorna a referencia para o HttpSession atual.
* @return HttpSession
*/
protected HttpSession getSession()
/**
* Retorna o contexto de Flash
* @return Flash
*/
protected Flash getFlash()
/**
* Adiciona uma mensagem no facesMessages com severidade info.
* @param msg
* @param params
*/
protected void addMsg(String msg, Object ... params)
/**
* Adiciona uma mensagem no facesMessages com severidade INFO, para o componente
* especificado
* @param compoenentId
* @param msg
* @param params
*/
protected void addMsgToComponent(String componenteId, String msg, Object... params)
/**
* Adiciona uma mensagem no facesMessages com severidade warn.
* @param msg
* @param params
*/
protected void addMsgWarn(String msg, Object... params)
/**
* Adiciona uma mensagem no facesMessages com severidade WARN, para o componente
* especificado.
* @param compoenentId
* @param msg
* @param params
*/
protected void addMsgWarnToComponent(String componenteId, String msg, Object... params)
/**
* Adiciona uma mensagem no facesMessages com severidade error.
* @param msg
* @param params
*/
protected void addMsgErro(String msg, Object... params)
/**
* Adiciona uma mensagem do bundle no facesMessages com severidade error, para o componente
* especificado.
* @param compoenentId
* @param msg
* @param params
*/
protected void addMsgErroToComponent(String componenteId, String msg, Object... params)
/**
* Lanca erro de validacao com a mensagem do bundle.
* @param key
* @throws ValidatorException
*/
protected void throwValidationException(String key) throws ValidatorException
/**
* Retorna a mensagem do arquivo properties default ("messages") formatada com os parametros passados.
*
* @param key
* @param params
* @return mensagem formatada
*/
protected String getMessageFromDefaultBundle(String key, Object ... params)
/**
* Retorna a mensagem do arquivo properties, que possui o nome passado como argumento, formatada com os parametros passados.
*
* @param bundleName
* @param key
* @param params
* @return mensagem formatada
*/
protected String getMessageFromBundle(String bundleName, String key, Object ... params)
/**
* Metodo para limpar o componente, na arvore jsf, cujo id informado.
* @param componentClientId
*/
protected void resetComponent(String componentClientId)Na versão atual do CDI e do JSF há o problema de que o escopo de View não é suportado pelo CDI. Para utilizar o escopo de View a sua controladora deverá ser uma ManageBean e não um bean gerenciado pelo CDI. O problema é que perde-se uma série de vantagens providas pelo CDI, como, por exemplo, interceptadores.
A arquitetura Suri-CDI corrige o problema (fonte DeltaSpike)! Logo, é possível criar a sua controladora da seguinte forma:
@Named
@ViewScoped
public class ListarPessoasController extends ControllerMas para facilitar um pouco a vida, provemos os seguintes esteriótipos:
-
- @ApplicationController
- É o mesmo que: @Named + @ApplicationScoped
- @SessionController
- É o mesmo que: @Named + @SessionScoped
- @ViewController
- É o mesmo que: @Named + @ViewScoped
- @RequestController
- É o mesmo que: @Named + @RequestScoped
Desta forma, sua controladora pode ser criada da seguinte forma:
@ViewController
public class ListarPessoasController extends Controller- @BusinessMessages
Exemplo:
@ViewController
@BusinessMessages
public class ManterPessoaController- A classe suporte Controller já possui essa anotação, logo todas as controladoras que estendam de Controller já terão o interceptor ativado, não sendo necessário adicionar a anotação em sua controladora.
© Copyright 2014 SURITTEC