O VRaptor consegue injetar tipos genericos no controller?
Tenho um cenario mais ou menos assim:
[code]public abstract class XPTOController<T> {
public void fazAlgumaCoisa(T entity) {
}
}
public class SuaEntityController extends XPTOController<SuaEntity> {
}
public class MinhaEntityController extends XPTOController<MinhaEntity> {
}[/code]
Era pra ele injetar a MinhaEntity no Controller corretamente?
Se eu fizer a operação na SuaEntityController ele injeta corretamente mas se depois disso eu for usar a MinhaEntityController ele continua injetando a SuaEntity no MinhaEntityController. E vice e versa. Na verdade ele assume que o T e a Entity do primeiro controller utilizado
ou seja, o primeiro nome é o que vc colocou no método fazAlgumaCoisa.[/quote]
Lucas, boa tarde!
Há algum tempo eu tentei usar genéricos e obtive o mesmo problema. Mesmo lendo agora a solução que vc passou, não consegui compreender exatamente.
Supondo que o método fazAlgumaCoisa insira dados no banco a partir do preenchimento da entidade que veio via Post de um formulário qualquer, oq vc quer
dizer com o entity.umaPropriedade=1234 ? Esses dados já não vem preenchidos na view???
Sim, esse dados vem preenchidos da view. O que ele quis dizer e que o nome da sua propriedade input tem que ser o nome que vc usou no parametro do metodo fazAlgumaCoisa ( nessa caso entity ) .nomeDaPropriedadeDoSeuObjeto
Exemplo:
No MeuController eu espero receber uma instancia da classe Instituicao que tem uma propriedade nome então tenho que no JSP usar entity.nome
No SeuController eu espero receber uma instancia da classe Aluno que tem a propriedade nota então tenho que no JSP usar entity.nota
<dependency>
<groupId>com.google.collections</groupId>
<artifactId>google-collections</artifactId>
<version>0.8</version>
</dependency>
Da outro erro:
o Guava é a evolução do Google Collections… ele compativel com o google collections antigo (a maior parte pelo menos) então vc não vai ter problemas em usá-lo.