Rendenização de elementos VRaptor 3 + JQuery

4 respostas
Polverini

Boa Tarde pessoal, estou tentando aprender VRaptor com JQuery, só estou com problemas com ajax nele, exemplo tenho um método e quando eu invoco ele passando login e senha ele retorna um parametro, o qual quero que apareça numa dialog, porém não consigo fazer a rendenização do valor lá dentro, segue exemplo :

.java

import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.view.Results;

@Resource
public class Index {

	protected Result result;

	public Index(Result result) {
		this.result = result;
	}

	@Path("/")
	public void teste() {
	}

	@Path("logar")
	@Post
	public void logar(String login, String senha) {
		System.err.println("Login: "+login +" Senha: "+senha);
		result.include("login", "Bem Vindo " + login);
		result.use(Results.status()).ok();
	}

}

jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript"
	src='<c:url value="js/jquery-1.6.2.js"></c:url>'></script>
<script type="text/javascript"
	src='<c:url value="js/jquery-ui-1.8.15.js"></c:url>'></script>
<link rel="stylesheet" type="text/css"
	href='<c:url value="css/ask.css"></c:url>'>
<title>Login</title>
</head>
<body>
	<div id="center" align="center" style="width: 100%; margin-top: 15%;">
		<img  /> <br />
		&lt;form id="form_login"&gt;
			&lt;fieldset style="width: 100px" id="loginField"&gt;
				&lt;legend class="ui-widget-header ui-corner-all"&gt;Logar&lt;/legend&gt;
				&lt;table&gt;
					&lt;tr&gt;
						&lt;td&gt;Login:&lt;/td&gt;
						&lt;td&gt;&lt;input type="text" name="login" /&gt;
						&lt;/td&gt;
					&lt;/tr&gt;
					&lt;tr&gt;
						&lt;td&gt;Senha:&lt;/td&gt;
						&lt;td&gt;&lt;input type="password" name="senha" /&gt;
						&lt;/td&gt;
					&lt;/tr&gt;
				&lt;/table&gt;
				&lt;button id="loga" style="margin-left: 50px;" type="button"&gt;Logar&lt;/button&gt;
			&lt;/fieldset&gt;
		&lt;/form&gt;
	&lt;/div&gt;
	&lt;div id="dialog"&gt;Login: ${login}&lt;/div&gt;
	&lt;script type="text/javascript"&gt;
		$(function() {
			$('#dialog').dialog({
				autoOpen : false,
				modal : true,
				show : "fade",
				hide : "slide"
			});
		});
		$(function() {
			$('#loga').button();
			$('#loga').click(function() {

				$.ajax({
					type : 'POST',
					url : 'logar',
					datatype : 'json',
					data : $('#form_login').serialize(),
					cache : false,
					success : function(data) {
						$('#dialog').append(data);
						$('#dialog').dialog('open');
					},
				});
			});
			return false;
		});
		$(function() {
			$('#loginField').tabs();
		});
	&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;

desde já vlw

4 Respostas

P

Use o firebug pra verificar o que esta sendo requisitado quando vc submete o formulario pois na linha 54 acho que falta o <c:curl>

Polverini

assim que der vou tentar e posto o resultado !

Lucas_Cavalcanti

Polverini,

vc mandou fazer $(’#dialog’).append(data); mas no controller não mandou nada…

o result.include não mexe na resposta diretamente, só coloca um atributo no request. Se vc quer que apareça o bem vindo, faça o seguinte:

@Path("logar")  
    @Post  
    public void logar(String login, String senha) {  
        System.err.println("Login: "+login +" Senha: "+senha);  
        result.use(http()).body("Bem Vindo " + login);  
    }
Polverini

opa funcionou lucas, obrigado !

Criado 19 de agosto de 2011
Ultima resposta 22 de ago. de 2011
Respostas 4
Participantes 3