O component chamado de parameter info provider é responsável por fornecer nomes para os parâmetros de um método de um componente. Isso é usado para associar os parâmetros da sua requisição com os parâmetros do método da sua lógica.
Isso significa que dado um método, ele deve decidir quais os nomes dos parâmetros para que o VRaptor chame o método da sua lógica com os parâmetros corretos.
A implementação padrão pega a primeira letra do nome da sua classe e converte em minúscula. (Calendar será calendar e MinhaClasse será minhaClasse)
Para sobrescrever o ParameterInfoProvider padrão, basta implementar a interface org.vraptor.component.ParameterInfoProvider e adicionar as seguintes linhas no seu web.xml:
<context-param>
<param-name>
org.vraptor.component.ParameterInfoProvider
</param-name>
<param-value>org.vraptor.MeuParameterInfoProvider</param-value>
</context-param>Voce pode utilizar o ParanamerParameterInfoProvider para permitir que o Vraptor utilize o Paranamer lendo os nomes das variaveis que sao parametros em seus metodos.
O problema com Java e que os nomes das variaveis locais (portanto dos parametros tambem) sao "perdidos" em tempo de compilacao, nao permitindo que a API de Reflection do Java nao permite acesso aos mesmos.
Para permitir descobrir o nome das variaveis como "int age" como age, voce precisa compilar o codigo com a opcao -g. O Eclipse, por exemplo, faz isso por padrao.
Para usar o suporte do paranamer, registre no seu arquivo web.xml:
<context-param>
<param-name>
org.vraptor.component.ParameterInfoProvider
</param-name>
<param-value>org.vraptor.component.ParanamerParameterInfoProvider</param-value>
</context-param>Para usar o maven 2 voce pode usar o codigo abaixo, extraido da aplicacao mydvds do repositorio do vraptor:
<build>
<plugins>
<plugin>
<groupId>com.thoughtworks.paranamer</groupId>
<artifactId>paranamer-maven-plugin</artifactId>
<executions>
<execution>
<id>run</id>
<configuration>
<sourceDirectory>
${basedir}/src/main/java
</sourceDirectory>
<outputDirectory>
${basedir}/target/classes
</outputDirectory>
</configuration>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
<plugins>
<build>