Bom, bati cabeça por um tempo com este erro, depois de algumas pesquisas descobri o motivo.
O erro ocorre porque o grails ao “startar” nossa aplicação tenta utilizar alguns recursos de conversação i18n, mas não consegue achar as classes que fazem isso, então ele lança uma exceção do tipo ClassNotFoundException.
Para corrigir basta editar o arquivo Conf.groovy e mudar o parâmetro
// o arquivo orignial encontra-se assim grails.enable.native2ascii = true
// basta "setar" para false grails.enable.native2ascii = false
Bom, como já havia prometido, vou dar inicio a série de posts sobre desenvolvimento com Groovy e Grails, então pra dar início vou demonstrar como configurar nosso ambiente para começar a desenvolver com Groovy no ubuntu.
O primeiro requisito é ter a JVM e configurar o JAVA_HOME no seu sistema. Já que o groovy trabalha diretamente com a plataforma Java.
Então abra o terminal e digite o trecho abaixo:
sudo apt-get install sun-java6-jdk
ou
sudo apt-get install sun-java5-jdk
e em seguida configure o ubuntu prara usalo
sudo update-alternatives –config javac
você pode instalar também por algum gerenciador de pacotes como Synaptic ou baixando os arquivos no site.
Depois disso no console digite java -version
a saída deve ser essa
java version "1.6.0_18" OpenJDK Runtime Environment (IcedTea6 1.8.1) (6b18-1.8.1-0ubuntu1) OpenJDK Server VM (build 16.0-b13, mixed mode)
se a versão que aparecer for algo do tipo java version “1.5”, java version “1.4.2” ou “command not foundI”, nos precisaremos definir a versão correta no $PATH do sistema.
agora precisando definir e configurar o JAVA_HOME,
o JAVA_HOME é uma variável de ambiente definida para facilitar a localização exata do java instalado por alguns programas, e pro nosso post o groovy precisará saber onde está instalado o java para ser instalado corretamente.
antes precisamos ver se esta variável já está definida, no console digite:
echo $JAVA_HOME
se aparecer o caminho correto de onde está instalado o java, então está tudo ok, caso contrário digite o seguinte comando no console
sudo cp/etc/bash.bashrc /etc/bash.bashrc_backup sudo gedit /etc/bash.bashrc
no final do arquivo digite
JAVA_HOME=local_onde_está_instalado_o_java export JAVA_HOME
salve, feche o arquivo e digite novamente echo $JAVA_HOME
pronto, passo 1 completo, java instalado e configurado. Se teve algum problema com as definições acima você pode ver mais detalhes sobre a instalação do java no ubunto na wiki do ubuntu.
O passo 2 será configurar o Grooy e definir o $GRAILS_HOME
então vamos baixar a ultima versão instável do groovy, aqui vou utilizar versão 1.7.5
para instalar descompacte o arquivo e execute o arquivo
unzipe groovy-binary-1.7.5.zip sudo ./groovy_1.7.5_all.bin
pronto, groovy instalado, para ver se está tudo ok digite no console: groovy -v
para mostrar a versão atual do groovy instalada na maquina.
Próximo passo agora é instalar o grails, então baixe o arquivo e descompacte em algum local,
depois edite novamente o arquivo bash.bashrc que está dentro de /etc/
e adicione no final do arquivo
GRAILS_HOME=/local_onde_está_descompactado_o_grails export GRAILS_HOME
salve, feche o arquivo e pronto, para testar vamos crir um projeto grails.
No console digite
grails create-app demo_grails cd demo_grails grails run-app
no browser digite http://localhost:8080/demo_grails/
e baaannn, está tudo pronto pra começar a desenvolver com Groovy e Grails.
em determinadas situações, dependendo da necessidade da nossa aplicação, precisamos capturar alguns eventos que são disparados durante o início e termino do ciclo de vida do JSF.
Antes a melhor forma para se fazer isso era utilizando Filters, mas no JSF podemos fazer isso implementando a interface PhaseListener, que ficará “ouvindo” as fases da nossa aplicação e capturá-las e executa alguma ação, antes ou depois de cada fase, de acordo com a requisição.
implementação:
import javax.faces.event.*;
public class AuthListener implements PhaseListener{
public void afterFase(PhaseEvent event){
String viewId = event.getFacesContext().getViewRoot().getViewId();
// do thing
}
public void beforeFase(PhaseEvent event){
// do thing
}
public PhaseId phaseId(){
return PhaseId.RESTORE_VIEW;
}
}