VRaptor3 + JQuery [Resolvido]

14 respostas
jehffersson
Estou com dificuldade para fazer um ajaxForm! O formulaŕio comun está dando certo! Esse:
<html>
<script type="text/javascript" src="<c:url value="/js/jquery-1.3.2.js"/>"></script> 
<script type="text/javascript" src="<c:url value="/js/jquery.form.js"/>"></script> 
<form name="formComentario" id="formComentario" action="<c:url value="/comentarios"/>" method="POST">
	<input name="comentario.idProduto" type="hidden" value="3">
	<input name="comentario.nomeTitular" type="hidden" value="Anônimo">
	<div style="width:100%" align="center">
		<div id="comentarioInsiraAqui" class="comentarioInsiraAqui" style="cursor:pointer" onclick="jQuery('#comenteAqui').show('slow');jQuery('#comentarioInsiraAqui').hide();">
			<img width="0" height="0" src="<c:url value="/lojaVirtualPaginas/imagens/comentarioProdutos/inserir_comentario_hover.png"/>"/>
			<img id="imgComent1" src="<c:url value="/lojaVirtualPaginas/imagens/comentarioProdutos/inserir_comentario.png"/>" onmouseover='imgComent1.src="<c:url value="/lojaVirtualPaginas/imagens/comentarioProdutos/inserir_comentario_hover.png"/>"' onmouseout='imgComent1.src="<c:url value="/lojaVirtualPaginas/imagens/comentarioProdutos/inserir_comentario.png"/>"' />
		</div>
		<div id="comenteAqui" style="margin:10px" >
			<table cellspacing="0" cellpadding="0" border="0">
				<tr>
					<td align="right"><div class="inserirComentarioCampo" align="right">Título: </div></td>
					<td align="left"><input type="text" class="inserirComentarioInput" name="comentario.titulo"  /></td>
				</tr>
				<tr>
					<td align="right"><div class="inserirComentarioCampo" align="right">Custo / Benefício: </div></td>
					<td align="left">
						<div style="width:150px" align="left">
							<input type="radio" name="comentario.custoBeneficio" value="1" title="Péssimo"/>
							<input type="radio" name="comentario.custoBeneficio" value="2" title="Ruim"/>
							<input type="radio" name="comentario.custoBeneficio" value="3" title="Bom"/>
							<input type="radio" name="comentario.custoBeneficio" value="4" title="Muito Bom"/>
							<input type="radio" name="comentario.custoBeneficio" value="5" title="Ótimo"/>
						</div>
					</td>
				</tr>
				<tr>
					<td align="right"><div class="inserirComentarioCampo" align="right">Qualidade: </div></td>
					<td align="left">
						<div style="width:150px" align="left">
							<input type="radio" name="comentario.qualidade" value="1" title="Péssimo"/>
							<input type="radio" name="comentario.qualidade" value="2" title="Ruim"/>
							<input type="radio" name="comentario.qualidade" value="3" title="Bom"/>
							<input type="radio" name="comentario.qualidade" value="4" title="Muito Bom"/>
							<input type="radio" name="comentario.qualidade" value="5" title="Ótimo"/>
						</div>
					</td>
				</tr>
				<tr>
					<td align="right"><div class="inserirComentarioCampo" align="right">Facilidade: </div></td>
		            <td align="left">
		                <div style="width:150px" align="left">
		                   	<input type="radio" name="comentario.facilidade" value="1" title="Péssimo"/>
		                   	<input type="radio" name="comentario.facilidade" value="2" title="Ruim"/>
		                   	<input type="radio" name="comentario.facilidade" value="3" title="Bom"/>
		                   	<input type="radio" name="comentario.facilidade" value="4" title="Muito Bom"/>
		                   	<input type="radio" name="comentario.facilidade" value="5" title="Ótimo"/>
		                </div>
		            </td>
		        </tr>
		        <tr>
		          	<td align="right"><div class="inserirComentarioCampo" align="right">Comentário: </div></td>
		           	<td align="left"><textarea class="inserirComentarioInput" name="comentario.comentario" style="height:100px"  ></textarea></td>
		        </tr>
		        <tr>
		          	<td align="right"></td>
		           	<td align="left">
		           		<button type="submit">teste</button>
		           	</td>
		        </tr>
		     </table>
		  </div>
	 </div>
</form>
Style
<style>
.tituloComentario {
	font-family: tahoma;
	font-size: 15px;
	font-weight: bold;
	color: #339933;
}

.textoComentario {
	font-family: tahoma;
	font-size: 11px;
}

.nomeTitularComentario {
	font-family: tahoma;
	font-size: 11px;
	font-weight: bold;
	color: #339933;
}

.atributoComentario {
	font-family: tahoma;
	font-size: 11px;
}

.avaliacaoComentario {
	font-family: tahoma;
	font-size: 12px;
	font-weight: bold;
}

.inserirComentarioCampo {
	font-family: tahoma;
	font-size: 11px;
	margin-right: 5px;
}

.inserirComentarioInput {
	font-family: tahoma;
	font-size: 12px;
	width: 240px;
}

.comentarioInsiraAqui {
	margin: 5px;
}
</style>
</html>
Mais já esse form não está funcionando!
<html>
<form name="formComentario" id="formComentario">
	<input name="comentario.idProduto" type="hidden" value="3">
	<input name="comentario.nomeTitular" type="hidden" value="Anônimo">
	<div style="width:100%" align="center">
		<div id="comentarioInsiraAqui" class="comentarioInsiraAqui" style="cursor:pointer" onclick="jQuery('#comenteAqui').show('slow');jQuery('#comentarioInsiraAqui').hide();">
			<img width="0" height="0" src="<c:url value="/lojaVirtualPaginas/imagens/comentarioProdutos/inserir_comentario_hover.png"/>"/>
			<img id="imgComent1" src="<c:url value="/lojaVirtualPaginas/imagens/comentarioProdutos/inserir_comentario.png"/>" onmouseover='imgComent1.src="<c:url value="/lojaVirtualPaginas/imagens/comentarioProdutos/inserir_comentario_hover.png"/>"' onmouseout='imgComent1.src="<c:url value="/lojaVirtualPaginas/imagens/comentarioProdutos/inserir_comentario.png"/>"' />
		</div>
		<div id="comenteAqui" style="margin:10px" >
			<table cellspacing="0" cellpadding="0" border="0">
				<tr>
					<td align="right"><div class="inserirComentarioCampo" align="right">Título: </div></td>
					<td align="left"><input type="text" class="inserirComentarioInput" name="comentario.titulo"  /></td>
				</tr>
				<tr>
					<td align="right"><div class="inserirComentarioCampo" align="right">Custo / Benefício: </div></td>
					<td align="left">
						<div style="width:150px" align="left">
							<input type="radio" name="comentario.custoBeneficio" value="1" title="Péssimo"/>
							<input type="radio" name="comentario.custoBeneficio" value="2" title="Ruim"/>
							<input type="radio" name="comentario.custoBeneficio" value="3" title="Bom"/>
							<input type="radio" name="comentario.custoBeneficio" value="4" title="Muito Bom"/>
							<input type="radio" name="comentario.custoBeneficio" value="5" title="Ótimo"/>
						</div>
					</td>
				</tr>
				<tr>
					<td align="right"><div class="inserirComentarioCampo" align="right">Qualidade: </div></td>
					<td align="left">
						<div style="width:150px" align="left">
							<input type="radio" name="comentario.qualidade" value="1" title="Péssimo"/>
							<input type="radio" name="comentario.qualidade" value="2" title="Ruim"/>
							<input type="radio" name="comentario.qualidade" value="3" title="Bom"/>
							<input type="radio" name="comentario.qualidade" value="4" title="Muito Bom"/>
							<input type="radio" name="comentario.qualidade" value="5" title="Ótimo"/>
						</div>
					</td>
				</tr>
				<tr>
					<td align="right"><div class="inserirComentarioCampo" align="right">Facilidade: </div></td>
		            <td align="left">
		                <div style="width:150px" align="left">
		                   	<input type="radio" name="comentario.facilidade" value="1" title="Péssimo"/>
		                   	<input type="radio" name="comentario.facilidade" value="2" title="Ruim"/>
		                   	<input type="radio" name="comentario.facilidade" value="3" title="Bom"/>
		                   	<input type="radio" name="comentario.facilidade" value="4" title="Muito Bom"/>
		                   	<input type="radio" name="comentario.facilidade" value="5" title="Ótimo"/>
		                </div>
		            </td>
		        </tr>
		        <tr>
		          	<td align="right"><div class="inserirComentarioCampo" align="right">Comentário: </div></td>
		           	<td align="left"><textarea class="inserirComentarioInput" name="comentario.comentario" style="height:100px"  ></textarea></td>
		        </tr>
		        <tr>
		          	<td align="right"></td>
		           	<td align="left">
		           		<img width="0" height="0" src="<c:url value="/lojaVirtualPaginas/imagens/comentarioProdutos/enviar_comentario_hover.png"/>"/> <img id="imgComent2" style="cursor:pointer" src="<c:url value="/lojaVirtualPaginas/imagens/comentarioProdutos/enviar_comentario.png"/>" onmouseover='imgComent2.src="<c:url value="/lojaVirtualPaginas/imagens/comentarioProdutos/enviar_comentario_hover.png"/>"' onmouseout='imgComent2.src="<c:url value="/lojaVirtualPaginas/imagens/comentarioProdutos/enviar_comentario.png"/>"'/>
		           	</td>
		        </tr>
		     </table>
		  </div>
	 </div>
</form>
<script>
	jQuery(document).ready(
			function() {
				jQuery('#comenteAqui').hide();
			}
	);
	function enviaComentario() {
		var itensForm = jQuery('#formComentario').serialize();
		jQuery.ajax({
			url: '<c:url value="/comentarios"/>',
			data: itensForm,
			type: 'POST',
			timeout: 1000,
			success: function(msg){
				jQuery("#comenteAqui").html(msg);
			}
		});
	}
</script>
</html>

14 Respostas

Lucas_Cavalcanti

vc pode ser mais específico quanto ao erro, por favor?

ter que entender todo o código que vc passou pra descobrir o que está errado é meio chato

yorgan

Acho que não está dando erro porque a function enviaComentario() nunca é chamada.
Tente mudar seu script para que ele seja acionado quando a ação de submit seja chamada:

<script>  
jQuery(document).ready(  
	jQuery("#formComentario").submit(function() {
		alert("Form acionado"); //Apenas para confirmar que está entrando na function
		var itensForm = jQuery('#formComentario').serialize();  
		jQuery.ajax({  
			url: '<c:url value="/comentarios"/>',  
			data: itensForm,  
			type: 'POST',  
			timeout: 1000,  
			success: function(msg){  
				jQuery("#comenteAqui").html(msg);  
			}  
		});  
	});  
);  
</script>
yorgan

Não seria interessante atualizar o jQuery também?
Vi que está utilizando a versão 1.3, mas pelo que li, a versão 1.5 teve vários aprimoramentos nas requisições Ajax.

[]'s
Daniel

jehffersson
Funcionou desse jeito!
<script>
	jQuery(document).ready(
			function() {
				jQuery('#comenteAqui').hide();
			}
	);
	jQuery(document).ready(
			jQuery("#formComentario").submit(function() {
				alert("Form acionado"); //Apenas para confirmar que está entrando na function
				var itensForm = jQuery('#formComentario').serialize();
				jQuery.ajax({
					url: '<c:url value="/comentarios"/>',
					data: itensForm,
					type: 'POST',
					timeout: 1000,
					success: function(msg){
						jQuery("#comenteAqui").html(msg);
					}
				});
			})
	); 
</script>
e no FORM um
<button type="submit">Teste</button>
E desse jeito tambem funcionou
<script>
			jQuery(document).ready(
					function() {
						jQuery('#comenteAqui').hide();
					}
			);
			function enviaComentario() {
				alert("Form acionado"); 
				var itensForm = jQuery('#formComentario').serialize();
				jQuery.ajax({
					url: '<c:url value="/comentarios"/>',
					data: itensForm,
					type: 'POST',
					timeout: 1000,
					success: function(msg){
						jQuery("#comenteAqui").html(msg);
					}
				});
			}
		</script>
<button onclick="enviaComentario()">Teste</button>
Mais eu tenho um verificador aki:
function getInternetExplorerVersion() {
				var rv = -1; // Return value assumes failure.
				if (navigator.appName == 'Microsoft Internet Explorer') {
					var ua = navigator.userAgent;
					var re = new RegExp('MSIE ([0-9]{1,}[\.0-9]{0,})');
					if (re.exec(ua) != null)
						rv = parseFloat(RegExp.$1);
				}
				return rv;
			}
			
			function checkVersion() {
				var ver = getInternetExplorerVersion();
				if (ver > -1) {
					if (ver < 9.0)
						return false;
				}
				return true;
			}
			
			jQuery(document).ready(
					function() {
						if(checkVersion()){
							addHover('a img');
							addHover('input[type=image]');
							jQuery('img').each(function() {
								if((jQuery(this).attr('onclick')!=undefined)&&(jQuery(this).attr('onclick')!='')){
									addHover(this);
								}
							});
						}
					}
			);
E deve ser aki o erro! o
<img width="0" height="0" src="<c:url value="/lojaVirtualPaginas/imagens/comentarioProdutos/enviar_comentario_hover.png"/>"/> <img id="imgComent2" style="cursor:pointer" src="<c:url value="/lojaVirtualPaginas/imagens/comentarioProdutos/enviar_comentario.png"/>" onmouseover='imgComent2.src="<c:url value="/lojaVirtualPaginas/imagens/comentarioProdutos/enviar_comentario_hover.png"/>"' onmouseout='imgComent2.src="<c:url value="/lojaVirtualPaginas/imagens/comentarioProdutos/enviar_comentario.png"/>"' onclick="enviaComentario()"/>
Não faz nada!
yorgan

Bom, isso é outro problema.
Como o Lucas falou, tenta explicar melhor o que você está precisando.
Sua dúvida inicial era enviar por ajax, isso pelo visto foi resolvido.

[]'s
Daniel

Lucas_Cavalcanti

talvez isso te ajude:

http://api.jquery.com/jQuery.browser/

e o que vc fez nos onmousehover, faça com css, é mais elegante

jehffersson
Bom está sim resolvido o envio mais não estou conseguindo resposta do atributo success
<script>
			jQuery(document).ready(
					function() {
						jQuery('#comenteAqui').hide();
					}
			);
			function enviaComentario() {
				var itensForm = jQuery('#formComentario').serialize();
				jQuery.ajax({
					url: '<c:url value="/comentarios"/>',
					data: itensForm,
					type: 'POST',
					timeout: 1000,
					success: function(msn){
						jQuery('#comenteAqui').html(msn);
					}
				});
			}
		</script>
Envia o form e salva, mais não executa o que está dentro do success:. Vou postar aqui o Controller. Eu também não estou conseguindo criar a data do momento da adição do comentário. No modelo é Timestamp o meu campo data.
@Resource
public class ComentariosController {
	private final ComentarioDao dao;
	private final Result result;

	public ComentariosController(ComentarioDao dao, Result result) {
		this.dao = dao;
		this.result = result;
	}
	@Post
	@Path("/comentarios")
	public void adiciona(final Comentario comentario) {
		//comentario.setData((Timestamp) Calendar.getInstance().getTime());  Problema está aqui.
		comentario.calculaMedia();
		dao.salva(comentario);
	}
}
Lucas_Cavalcanti

jehffersson, uma dica: não crie os eventos javascript dentro do html, crie sempre via javascript, usando o jquery. Fica mais fácil de dar manutenção depois.
mesma coisa pra style: deixe tudo no css.

se vc coloca um alert dentro do success, ele executa?

vc também vai precisar retornar um false no método enviaComentário, pra prevenir que o form seja submetido. E esse enviaComentário deveria estar registrado no submit do form, e não no click do botão.

pq não usar $ ao invés de jQuery no javascript? fica bem mais legível e limpo ($(’#formComentario’)…)

no controller o problema é que Timestamp estende Date, mas vc não pode dar cast de um Date qualquer pra Timestamp. Tenta isso:

comentario.setData(new Timestamp(new Date().getTime()));

Algum motivo especial para usar Timestamp? se vc está usando JPA/Hibernate, vc pode usar Calendar, e anotar o campo com @Temporal(TIMESTAMP)

[]'s

jehffersson

Lucas muito obrigado eu passei o atributo data do Comentario de Timestamp para Calendar.
Mais agora está aparecendo isso:

16/03/2011 02:42:35 org.hibernate.validator.util.Version <clinit> INFO: Hibernate Validator 4.0.2.GA 16/03/2011 02:42:35 org.hibernate.validator.engine.resolver.DefaultTraversableResolver detectJPA INFO: Instantiated an instance of org.hibernate.validator.engine.resolver.JPATraversableResolver. Criando Session........... Hibernate: select produto0_.id as id0_0_, produto0_.ativo as ativo0_0_, produto0_.categoria as categoria0_0_, produto0_.codigo as codigo0_0_, produto0_.descricao as descricao0_0_, produto0_.descricaoCompl as descrica6_0_0_, produto0_.estoque as estoque0_0_, produto0_.estoqueInicial as estoqueI8_0_0_, produto0_.estoqueMinimo as estoqueM9_0_0_, produto0_.freteGratis as freteGr10_0_0_, produto0_.garantia as garantia0_0_, produto0_.lancamento as lancamento0_0_, produto0_.marca as marca0_0_, produto0_.modelo as modelo0_0_, produto0_.nome as nome0_0_, produto0_.palavrasChaves as palavra16_0_0_, produto0_.pesoKg as pesoKg0_0_, produto0_.prazoDeEntrega as prazoDe18_0_0_, produto0_.preco as preco0_0_, produto0_.precoAntigo as precoAn20_0_0_, produto0_.precoDeCusto as precoDe21_0_0_, produto0_.principal as principal0_0_, produto0_.tamCubico as tamCubico0_0_, produto0_.valorDecrarado as valorDe24_0_0_, produto0_.vendaSemEstoque as vendaSe25_0_0_, produto0_.visitas as visitas0_0_ from Produto produto0_ where produto0_.id=? Hibernate: update Produto set ativo=?, categoria=?, codigo=?, descricao=?, descricaoCompl=?, estoque=?, estoqueInicial=?, estoqueMinimo=?, freteGratis=?, garantia=?, lancamento=?, marca=?, modelo=?, nome=?, palavrasChaves=?, pesoKg=?, prazoDeEntrega=?, preco=?, precoAntigo=?, precoDeCusto=?, principal=?, tamCubico=?, valorDecrarado=?, vendaSemEstoque=?, visitas=? where id=? Hibernate: select this_.id as id2_0_, this_.avaliacaoMedia as avaliaca2_2_0_, this_.comentario as comentario2_0_, this_.custoBeneficio as custoBen4_2_0_, this_.data as data2_0_, this_.facilidade as facilidade2_0_, this_.idProduto as idProduto2_0_, this_.nomeTitular as nomeTitu8_2_0_, this_.qualidade as qualidade2_0_, this_.titulo as titulo2_0_ from Comentario this_ where this_.idProduto=? 16/03/2011 02:42:37 org.apache.catalina.core.ApplicationDispatcher invoke GRAVE: Servlet.service() for servlet jsp threw exception javax.el.ELException: Cannot convert java.util.GregorianCalendar[time=1300252320000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="America/Sao_Paulo",offset=-10800000,dstSavings=3600000,useDaylight=true,transitions=129,lastRule=java.util.SimpleTimeZone[id=America/Sao_Paulo,offset=-10800000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=9,startDay=15,startDayOfWeek=1,startTime=0,startTimeMode=0,endMode=3,endMonth=1,endDay=15,endDayOfWeek=1,endTime=0,endTimeMode=0]],firstDayOfWeek=2,minimalDaysInFirstWeek=1,ERA=1,YEAR=2011,MONTH=2,WEEK_OF_YEAR=12,WEEK_OF_MONTH=3,DAY_OF_MONTH=16,DAY_OF_YEAR=75,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=3,AM_PM=0,HOUR=2,HOUR_OF_DAY=2,MINUTE=12,SECOND=0,MILLISECOND=0,ZONE_OFFSET=-10800000,DST_OFFSET=0] of type class java.util.GregorianCalendar to class java.util.Date at org.apache.el.lang.ELSupport.coerceToType(ELSupport.java:470) at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:194) at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:971) at org.apache.jsp.WEB_002dINF.jsp.produtos.ver_jsp._jspx_meth_fmt_005fformatDate_005f0(ver_jsp.java:3379) at org.apache.jsp.WEB_002dINF.jsp.produtos.ver_jsp._jspx_meth_c_005fforEach_005f0(ver_jsp.java:3228) at org.apache.jsp.WEB_002dINF.jsp.produtos.ver_jsp._jspService(ver_jsp.java:1040) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:73) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:378) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at br.com.caelum.vraptor.core.DefaultStaticContentHandler.deferProcessingToContainer(DefaultStaticContentHandler.java:64) at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:80) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:242) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:674) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:462) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:401) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329) at br.com.caelum.vraptor.view.DefaultPageResult.defaultView(DefaultPageResult.java:67) at br.com.caelum.vraptor.interceptor.ForwardToDefaultViewInterceptor.intercept(ForwardToDefaultViewInterceptor.java:60) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.interceptor.OutjectResult.intercept(OutjectResult.java:67) at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:85) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:89) at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:23) at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92) at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58) at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:242) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:201) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:163) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:556) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:402) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:249) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:267) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:245) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:260) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Fechando Session........... 16/03/2011 02:42:37 org.apache.catalina.core.StandardWrapperValve invoke GRAVE: Servlet.service() for servlet default threw exception br.com.caelum.vraptor.view.ResultException: org.apache.jasper.JasperException: javax.el.ELException: Cannot convert java.util.GregorianCalendar[time=1300252320000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="America/Sao_Paulo",offset=-10800000,dstSavings=3600000,useDaylight=true,transitions=129,lastRule=java.util.SimpleTimeZone[id=America/Sao_Paulo,offset=-10800000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=9,startDay=15,startDayOfWeek=1,startTime=0,startTimeMode=0,endMode=3,endMonth=1,endDay=15,endDayOfWeek=1,endTime=0,endTimeMode=0]],firstDayOfWeek=2,minimalDaysInFirstWeek=1,ERA=1,YEAR=2011,MONTH=2,WEEK_OF_YEAR=12,WEEK_OF_MONTH=3,DAY_OF_MONTH=16,DAY_OF_YEAR=75,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=3,AM_PM=0,HOUR=2,HOUR_OF_DAY=2,MINUTE=12,SECOND=0,MILLISECOND=0,ZONE_OFFSET=-10800000,DST_OFFSET=0] of type class java.util.GregorianCalendar to class java.util.Date at br.com.caelum.vraptor.view.DefaultPageResult.defaultView(DefaultPageResult.java:69) at br.com.caelum.vraptor.interceptor.ForwardToDefaultViewInterceptor.intercept(ForwardToDefaultViewInterceptor.java:60) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.interceptor.OutjectResult.intercept(OutjectResult.java:67) at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:85) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:89) at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:23) at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92) at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58) at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:242) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:201) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:163) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:556) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:402) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:249) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:267) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:245) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:260) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Caused by: org.apache.jasper.JasperException: javax.el.ELException: Cannot convert java.util.GregorianCalendar[time=1300252320000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="America/Sao_Paulo",offset=-10800000,dstSavings=3600000,useDaylight=true,transitions=129,lastRule=java.util.SimpleTimeZone[id=America/Sao_Paulo,offset=-10800000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=9,startDay=15,startDayOfWeek=1,startTime=0,startTimeMode=0,endMode=3,endMonth=1,endDay=15,endDayOfWeek=1,endTime=0,endTimeMode=0]],firstDayOfWeek=2,minimalDaysInFirstWeek=1,ERA=1,YEAR=2011,MONTH=2,WEEK_OF_YEAR=12,WEEK_OF_MONTH=3,DAY_OF_MONTH=16,DAY_OF_YEAR=75,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=3,AM_PM=0,HOUR=2,HOUR_OF_DAY=2,MINUTE=12,SECOND=0,MILLISECOND=0,ZONE_OFFSET=-10800000,DST_OFFSET=0] of type class java.util.GregorianCalendar to class java.util.Date at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:498) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:427) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at br.com.caelum.vraptor.core.DefaultStaticContentHandler.deferProcessingToContainer(DefaultStaticContentHandler.java:64) at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:80) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:242) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:674) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:462) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:401) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329) at br.com.caelum.vraptor.view.DefaultPageResult.defaultView(DefaultPageResult.java:67) ... 52 more Caused by: javax.el.ELException: Cannot convert java.util.GregorianCalendar[time=1300252320000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="America/Sao_Paulo",offset=-10800000,dstSavings=3600000,useDaylight=true,transitions=129,lastRule=java.util.SimpleTimeZone[id=America/Sao_Paulo,offset=-10800000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=9,startDay=15,startDayOfWeek=1,startTime=0,startTimeMode=0,endMode=3,endMonth=1,endDay=15,endDayOfWeek=1,endTime=0,endTimeMode=0]],firstDayOfWeek=2,minimalDaysInFirstWeek=1,ERA=1,YEAR=2011,MONTH=2,WEEK_OF_YEAR=12,WEEK_OF_MONTH=3,DAY_OF_MONTH=16,DAY_OF_YEAR=75,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=3,AM_PM=0,HOUR=2,HOUR_OF_DAY=2,MINUTE=12,SECOND=0,MILLISECOND=0,ZONE_OFFSET=-10800000,DST_OFFSET=0] of type class java.util.GregorianCalendar to class java.util.Date at org.apache.el.lang.ELSupport.coerceToType(ELSupport.java:470) at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:194) at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:971) at org.apache.jsp.WEB_002dINF.jsp.produtos.ver_jsp._jspx_meth_fmt_005fformatDate_005f0(ver_jsp.java:3379) at org.apache.jsp.WEB_002dINF.jsp.produtos.ver_jsp._jspx_meth_c_005fforEach_005f0(ver_jsp.java:3228) at org.apache.jsp.WEB_002dINF.jsp.produtos.ver_jsp._jspService(ver_jsp.java:1040) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:73) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:378) ... 66 more

E eu estou chamando o onclick da imagem.
Não entendi esse trecho!


vc também vai precisar retornar um false no método enviaComentário, pra prevenir que o form seja submetido. E esse enviaComentário deveria estar registrado no submit do form, e não no click do botão.

Um alert dentro do success, ele executa SIM.

Lucas_Cavalcanti

a exception é pq o fmt:formatDate só funciona com Date…

pra usar com calendar é só fazer:

<fmt:formatDate value="${oCalendar.time}"/>

dentro do success, coloque um alert(msg). o que aparece?

existe um elemento com o id ‘#comenteAqui’ no html? vc tinha escondido ele (com o .hide()), vc precisa mostrar
(com o .show()), senão ele não aparece

jehffersson
Lucas! Muito obrigado mais uma vez! Agora funcionou, e o código ficou assim!
<script>
			jQuery(document).ready(
					function() {
						jQuery('#comenteAqui').hide();
					}
			);

			function enviaComentario() {
				var itensForm = jQuery('#formComentario').serialize();
				jQuery.ajax({
					url: '<c:url value="/comentarios"/>',
					data: itensForm,
					type: 'POST',
					timeout: 1000,
					success: jQuery(document).ready(function(msn) {
								//jQuery('#comentarioInsiraAqui').show('slow');
								jQuery('#comenteAqui').html(msn);
								alert("Seu comentario foi enviado com sucesso! Atualize a página.");
							 })
				});
			}
</script>
Lucas_Cavalcanti

Dica: no success passe a function direto, sem o jQuery(…).ready

jehffersson

No <fmt… ficou assim:

(<fmt:formatDate value= "${comentario.data.time}" type= "both" timeStyle= "medium" dateStyle= "medium" />)
jehffersson

Lucas estava assim do jeito que vc falau, mais só funcionou depois que eu adicione o: jQuery(document).ready(function(msn) { //jQuery('#comentarioInsiraAqui').show('slow'); jQuery('#comenteAqui').html(msn); alert("Seu comentario foi enviado com sucesso! Atualize a página."); })

Criado 15 de março de 2011
Ultima resposta 16 de mar. de 2011
Respostas 14
Participantes 3