-
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:
/**
* 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()Para utilizá-lo sobrescreva em sua controller.
/**
* 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)/**
* 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:
É o mesmo que:
- @Named
- @ApplicationScoped
Utilização
@ApplicationController
public class ListarPessoasController extends ControllerÉ o mesmo que:
- @Named
- @SessionScoped
Utilização
@SessionController
public class ListarPessoasController extends ControllerÉ o mesmo que:
- @Named
- @ViewScoped
Utilização
@ViewController
public class ListarPessoasController extends ControllerÉ o mesmo que:
- @Named
- @RequestScoped
Utilização
@RequestController
public class ListarPessoasController extends ControllerEste interceptador é responsável por capturar as BusinessException e transformá-las em mensagens de erro do JSF. Ou seja, ao lançar uma BusinessException na camada de Negócio, não é necessário que na controladora tenha o tratamento da exceção, pois será realizado automaticamente por este interceptador.
Utilização
@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