VRaptor 3.5.0 Lançado!

[quote=ThiagoInGuj]Lucas, quando eu coloco qq parametro, assim por exemplo:

O erro não ocorre. Mais a url também não é montada.[/quote]

Thiago, você tem certeza que não existe outro método na classe Controller com o nome “login”?

É um controller que extends outro controller? Se sim, o Controller pai tem algum método com o nome “login”?

LinkTo não serve para métodos POST. :slight_smile:

Não tem como criar um Link com POST.

alias meu xará rs eu simplesmente coloquei a url da action na mão mesmo enquanto o problema persistir…

Nykolas Lima eu to olhando pelo outline do eclipse e nao to vendo outro metodo login lá nao. Tem loginForm. Mas login nao tem outro nao.

Meu controller não extends ninguem tadinho, ele faz tudo sozinho rs

garcia-jj porque nao serve? tem que servir po!

[quote=garcia-jj]LinkTo não serve para métodos POST. :slight_smile:

Não tem como criar um Link com POST.[/quote]

Se faz essa checagem agora nao fazia antes, pq eu uso o linkTo pra preencher o atributo action dos forms. E é tudo método POST.

se o lnkTo nao servir para metodos post, entao pra que receber parametros? deveria receber somente String entao

o linkTo funciona pra POST sim, afinal é pra vc pegar a URI do método.

Isso é um bug mesmo, vou ver se corrijo e já crio um snapshot pra vcs testarem.

Pretendo lançar o 3.5.1 em breve com esses bugfixes.

Valeu! :wink:

My bad, funciona sim. Eu havia entendido outra coisa no post, que era a intenção de criar um “a href” com POST. :frowning:

[quote=alias][quote=garcia-jj]LinkTo não serve para métodos POST. :slight_smile:

Não tem como criar um Link com POST.[/quote]

Se faz essa checagem agora nao fazia antes, pq eu uso o linkTo pra preencher o atributo action dos forms. E é tudo método POST.[/quote]

ThiagoInGuj e alias:

https://oss.sonatype.org/content/repositories/snapshots/br/com/caelum/vraptor/3.5.1-SNAPSHOT/vraptor-3.5.1-20130418.142121-1.jar

esse snapshot deve resolver o problema do linkTo. Podem testar por favor?

Opa, desculpem a demora no feedback, só consegui testar hoje…mas, bom, não tá funcionando 100% ainda nao lucas

Olha o meu teste

@Resource
public class IndexController {

	@Path("/")
	public void index() {
	}
	
	@Path("/teste")
	public void teste() {
		
	}
	
	@Path("/teste/{param}")
	public void teste(String param) {
		
	}
	
	@Path("/teste/{param}/{param2}")
	public void teste(String param, String param2) {
		
	}
	
	@Path({"/teste2", "/teste2/{param}"})
	public void teste2(String param){
		
	}
}

JSP


1 -> ${linkTo[IndexController].teste}
		
2 -> ${linkTo[IndexController].teste['tiago']}

3 -> ${linkTo[IndexController].teste['tiago']['tiago']}
		
4 -> ${linkTo[IndexController].teste2}

5 -> ${linkTo[IndexController].teste2['tiago']}

E a saída

1 -> /teste 
2 -> /teste/tiago 
3 -> /teste/tiago/tiago 
4 -> /teste2 
5 -> /teste2 

Apenas esse quinto teste saiu errado (o esperado era /teste2/tiago)…antes do linkTo suportar a sobrecarga de métodos, eu estava utilizando assim, recebendo mais um path no mesmo método no controller. E a invocação do metodo no jsp, com o linkTo, funcionava com e sem parametro.

Eu penso que o ideal seria sobrecarregar o método, da forma como está funcionando agora, como esse exemplo do método “teste”, mas se der pra fazer suportar esse segundo cenario ai…senao eu vou ter que reescrever vários controllers aqui! :lol:

Valeu!

é que se tiver no caso:

 @Path({"/teste2", "/teste2/{param}"})

é meio difícil chutar qual dos paths possíveis a gente deveria usar… o VRaptor sempre deu preferência para o primeiro path (e isso funciona desse mesmo jeito para o redirectTo, por exemplo)

Isso tava funcionando antes?

[quote=Lucas Cavalcanti]é que se tiver no caso:

 @Path({"/teste2", "/teste2/{param}"})

é meio difícil chutar qual dos paths possíveis a gente deveria usar… o VRaptor sempre deu preferência para o primeiro path (e isso funciona desse mesmo jeito para o redirectTo, por exemplo)

Isso tava funcionando antes?[/quote]

Sim, estava. Retornava o path com o parametro, ou o path sem parametro caso não fosse passado no jsp. Será que tava funcionando por “sorte”? :stuck_out_tongue:

Acho que era sorte sim :stuck_out_tongue:

não foi mudado nada nessa parte…

o cara que faz isso é esse código:

ele filtra todas as Routes que caem no type e method passados, e seleciona a primeira… Isso pode vir em qualquer ordem.

se vc trocar de:

@Path({"/teste2", "/teste2/{param}"})

para

@Path({"/teste2/{param}", "/teste2"})

creio que funcione

Funcionou lucas, creio que eu que me enganei, pq olhando os controllers aqui dos meus projetos já estavam todos do jeito que voce sugeriu (com o path com parametro sendo o primeiro item do array de paths), então acho que já não funcionava mesmo, mas nem precisa tambem, esse ajuste no array já resolve.

E isso aqui, acha que é um uso válido pro linkTo?

${linkTo[IndexController].teste2[null]}

Pensei em algum cenario que fosse passado como parametro alguma variavel (${algumacoisa}) que porventura venha nula…nesse caso ai o linkTo não está devolvendo nada

Fora esse cenário esse bizarro acima, o linkTo tá corrigido.

Valeu!

é que dá NullPointerException, e o ${} ignora NullPointerExceptions

o ideal seria dar um erro sim… abre uma issue lá por favor =)

Estou com um problema, após atualizar o Vraptor, ele parou de reconhecer métodos como addAnnotatedClass(Class) da Configuration do Hibernate, alguém mais passou por isso?

Isso não é da atualização do VRaptor, é por causa da atualização do hibernate.

esse método só funciona até o hibernate 3.6.x

[quote=Lucas Cavalcanti]Isso não é da atualização do VRaptor, é por causa da atualização do hibernate.

esse método só funciona até o hibernate 3.6.x[/quote]

O VRaptor não usa esse ? Estou usando o 3.6.10

o VRaptor não depende do hibernate. Você pode usar a que você quiser.