Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

importing wiki changes #448

Merged
merged 1 commit into from
Mar 21, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions vraptor-site/content/en/docs/controllers-rest.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
---
title: Controllers Rest
---
1 change: 1 addition & 0 deletions vraptor-site/content/en/docs/plugins.html
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
---
title: Plugins
---

3 changes: 0 additions & 3 deletions vraptor-site/content/en/docs/resources-rest.html

This file was deleted.

4 changes: 1 addition & 3 deletions vraptor-site/content/pt/docs/controllers-rest.html
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,7 @@

##Reflection no nome dos parâmetros

Infelizmente, o Java não realiza reflection em cima de parâmetros, pois esses dados não ficam disponíveis em bytecode (a não ser se compilado em debug mode, porém é algo opcional). Isso faz com que a maioria dos frameworks que precisem desse tipo de informção criem uma anotação própria para isso, o que polui muito o código (exemplo no JAX-WS, onde é comum encontrar um método como o acima com a assinatura `void add(@WebParam(name="cliente") Cliente cliente)`.

O VRaptor tira proveito do framework <a href="http://paranamer.codehaus.org">Paranamer</a>, que consegue tirar essa informação por meio da pré compilação ou dos dados de debug, evitando criar mais uma anotação. Alguns dos desenvolvedores do VRaptor também participam no desenvolvimento do Paranamer.
O VRaptor tira proveito do framework [Paranamer](http://paranamer.codehaus.org), que consegue extrair essa informação por meio dos dados de debug. Alguns dos desenvolvedores do VRaptor também participam no desenvolvimento do Paranamer.

##Escopos

Expand Down
4 changes: 3 additions & 1 deletion vraptor-site/content/pt/docs/conversores.html
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

`Calendar` e `Date` são suportados por padrão usando a localização da sua aplicação.

Existem conversores para os principais tipos do Joda-time como `DateTime`, `LocalDate`, `LocalDateTime` e `LocalTime`. Os conversores do Joda-time são ativados automaticamente se você tiver o joda-time no classpath.
Existem conversores para os principais tipos do Joda-time como `DateTime`, `LocalDate`, `LocalDateTime` e `LocalTime`. Os conversores do Joda-time são ativados automaticamente se você tiver o joda-time no classpath. Mais informações [aqui](/pt/dependencias-e-pre-requisitos).

##Definindo a localização (Locale) da aplicação

Expand All @@ -28,6 +28,8 @@
</context-param>
~~~

Ou vocẽ pode iniciar o servidor de aplicações ou servlet container com o parâmetro `-Duser.language=pt -Duser.region=BR`.

##Criando seu próprio converter

Todos os conversores devem implementar a interface `Converter` do vraptor. A classe concreta definirá o tipo que ela é capaz de converter e será invocada com o valor do parâmetro do request e o tipo alvo.
Expand Down
49 changes: 45 additions & 4 deletions vraptor-site/content/pt/docs/dependencias-e-pre-requisitos.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,14 @@
- Tomcat 7 (+ jars do Weld 2.0)
- Jetty 8 (+ jars do Weld 2.0)

> O Wildfly possui uma restrição para a classe `MutableResponse`. Para contornar isso você precisa adicionar o seguinte parâmetro no arquivo `standalone.xml` na tag `servlet-container` do subsystem `undertown`:
Ao usar um Servlet Container como o Tomcat ou Jetty, é preciso adicionar os jars do Weld 2.x, além do seguinte listener em seu `web.xml`:

~~~
~~~
#!xml
allow-non-standard-wrappers="true"
~~~
<listener>
<listener-class>org.jboss.weld.environment.servlet.Listener</listener-class>
</listener>
~~~

## Maven

Expand Down Expand Up @@ -44,6 +46,32 @@

Se você não quiser usar o Maven, basta criar um projeto em branco na sua IDE preferida e adicionar o jar do VRaptor com as dependências.

### CDI

Esta é a dependência mais importante do VRaptor 4. Se você usa um Application Server, ele já possui esta dependência, portanto você pode declarar no seu `pom.xml` como `provided` conforme exemplo:

~~~
#!xml
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
<scope>provided</scope>
</dependency>
~~~

E se você utiliza um Servler Container (como o Tomcat ou Jetty) você precisa adicionar a implementação de referência do CDI: o Weld.

~~~
#!xml
<dependency>
<groupId>org.jboss.weld.servlet</groupId>
<artifactId>weld-servlet</artifactId>
<version>2.1.2.Final</version>
</dependency>
~~~


## Logging

Utilizamos o SLF4J (Simple Logging Facade for Java) para imprimir os logs dos eventos internos. SLF4J pode direcionar o logging para vários frameworks de logging como NOP, Simple, log4j e JDK Logging. Para configurar o logging você precisa adicionar no seu classpath o jar `slf4j-api.jar` juntamente com o jar de binding que você escolher. Veja mais sobre o assunto na <a href="http://www.slf4j.org/manual.html">documentação do SLF4J</a>.
Expand Down Expand Up @@ -111,6 +139,19 @@

Se você usa um servidor de aplicações não é necessário adicionar a dependência do Bean Validation, pois já está incluído no Java EE 7.

### Joda-time

Joda-time é uma API para facilitar o trabalho de dados temporais em Java. Os componentes do Joda-time são opcionais e ativados somente se o Joda-time for encontrado no classpath.

~~~
#!xml
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.1.0</version>
</dependency>
~~~

## Paranamer

Infelizmente, o Java não realiza reflection de parâmetros em métodos e construtores, pois esses dados não ficam disponíveis em bytecode (a não ser se compilado em **debug mode**, porém é algo opcional). Isso faz com que a maioria dos frameworks que precisem desse tipo de informação criem uma anotação própria para isso, o que polui muito o código (exemplo no JAX-WS, onde é comum encontrar um método como o acima com a assinatura `void add(@WebParam(name="cliente") Cliente cliente)`.
Expand Down
2 changes: 1 addition & 1 deletion vraptor-site/content/pt/docs/download-e-upload.html
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@

##Upload

Para ativar o suporte a upload é necessário adicionar as bibliotecas `commons-upload` e `commons-io` em seu classpath.
Para ativar o suporte a upload é necessário adicionar as bibliotecas `commons-upload` e `commons-io` em seu classpath. Veja mais informações [aqui](/pt/dependencias-e-pre-requisitos).

#Exemplo de 1 minuto: upload

Expand Down
21 changes: 0 additions & 21 deletions vraptor-site/content/pt/docs/interceptadores.html
Original file line number Diff line number Diff line change
Expand Up @@ -156,24 +156,3 @@

O VRaptor lançará uma exception se existir um ciclo na ordem dos interceptors, então tenha cuidado.

##Interagindo com os interceptors do VRaptor

O VRaptor possui sua própria sequência de interceptor, e você pode definir a ordem dos seus interceptors baseados na do VRaptor.

Aqui estão os principais interceptors do VRaptor e o que eles produzem:

* `ExceptionHandlerInterceptor` - intercepta todas as requisições para tratar as exceções não capturadas

* `FlashInterceptor` - mantém por mais uma request os parâmetros da request

* `ForwardToDefaultViewInterceptor` - redireciona (forward) para a jsp padrão se nenhuma outra view foi usada.


Se você precisa executar um interceptor antes ou depois de algum interceptor do VRaptor, basta utilizar os atributos `after` e `before` passando a classe do interceptor como valor. Algo como:

~~~
#!java
@Intercepts(
after=ExceptionHandlerInterceptor.class,
before=ForwardToDefaultViewInterceptor.class)
~~~
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,6 @@

Para utilizar o VRaptor é necessário possuir o JDK 7 e um Application Server ou Servlet Container que possua suporte ao Servlet 3.1.

Se você estiver usando um Servlet Container como o Jetty ou o Tomcat, você precisa configurar um listener do Weld na sua aplicação. É necessário adicionar o seguinte trecho ao web.xml:

~~~
#!xml
<listener>
<listener-class>org.jboss.weld.environment.servlet.Listener</listener-class>
</listener>
~~~

**Atenção**: ao escolher um Application Server, verifique se a versão é compatível com o Java EE 7 Full ou Web Profile. Atualmente o Glassfish 4 e Wildfly 8 possuem suporte ao Java EE 7.

## Beans.xml

Expand All @@ -29,6 +19,11 @@

O CDI **exige** que cada classe possua o construtor padrão (sem argumentos). Sendo assim você deverá adicionar o construtor padrão em todos os componentes. E o construtor onde serão injetados os componentes deve possuir a anotação `@Inject`.

### Static scanning

Se você usava este recurso, ele não é mais necessário, pois o scanning de classes é feito de forma otmizada pelo CDI. Basta remover as configurações do seu build.


##Eventos de inicialização

No VRaptor 3, quando você anotava um componente com `@ApplicationScoped`, o código era executado na inicialização do sistema. Com o uso do CDI, agora é necessário usar a anotação `@Observes`:
Expand Down
11 changes: 11 additions & 0 deletions vraptor-site/content/pt/docs/plugins.html
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,17 @@

É importante que a `persistence unit` chame-se `default`, e que o `persistence.xml` esteja no diretório `src/main/resources/META-INF/`.

O plugin não possui nenhum provider. Com isso é necessário que você declare algum provider, como por exemplo, o Hibernate.

~~~
#!xml
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.3.0.Final</version> <!-- Ou outra versão compatível com JPA 2.1 -->
</dependency>
~~~

Plugin no Gihub: https://github.com/caelum/vraptor-jpa

##VRaptor Hibernate
Expand Down
9 changes: 7 additions & 2 deletions vraptor-site/content/pt/docs/validacao.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@

##Dependências

Para ativar a validação é necessário ter no _classpath_ alguma implementação para o Bean Validator.
Para ativar a validação é necessário ter no _classpath_ alguma implementação para o Bean Validator. Veja mais informações [aqui](/pt/dependencias-e-pre-requisitos).

Se você estiver usando um _servidor de aplicações_ como Wildfly ou Glassfish, você não precisa adicionar nenhuma dependência. Porém se você usar apenas um _servlet container_, é necessário adicionar o Hibernate validator em seu projeto maven, basta incluir no _classpath_ o artefato:

Expand Down Expand Up @@ -113,7 +113,12 @@

##Mostrando os erros de validação no JSP

Quando existem erros de validação, o VRaptor coloca um atributo na requisição chamado errors contendo a lista de erros, então você pode mostrá-los na sua JSP de um jeito parecido com:
Quando existem erros de validação, o VRaptor coloca um atributo na requisição chamado `errors` contendo a lista de erros. Essa lista é representada por items chave-valor, onde temos:

- <code>category</code>: representa o atributo que originou o erro, cujo valor é uma convenção para metodoController.objeto.caminho.do.atributo
- <code>message</code>: representa a mensagem padrão da API do Bean Validation, normalmente um sufixo como: "deve estar no futuro", "não pode ser nulo", etc.

E na view você pode imprimir:

~~~
#!xml
Expand Down