Ola pessoal, estava tentando trocar a cor do fundo de uma div pelo Jquery. Axei um script que troca a cor do fundo de acordo com mouseover
$(document).ready( function() {
$(".gray_grid tbody tr td table tbody tr").mouseover(function() {
$(this).css("background-color","#b7ffcc");
}).mouseout(function() {
$(this).css("background-color","#fff");
})
})
Porem, eu precisava trocar a cor do fundo de acordo com a resposta da função na classe java. Assim, minha função retorna um boolean. Algo tipo assim, se retornar verdadeiro, fundo fica verde, se retornar falso, fundo fica vermelho.
Estava tentando seguir este exemplo:
http://www.cs.wcupa.edu/~rkline/Java/ajax.html
So que este segundo exemplo [color=red]First AJAX usage [/color]não funciona. Era exatamente o que eu precisava…
Sera que alguem consegue mostrar como ficaria o script de trocar a cor do fundo juntamente com o retorno da classe java?
basicamente, vc precisa pegar o retorno e transformar em json, assim vc receberá no callback da sua chamada ajax e pega o resultado e testa qual valor vc deseja fazer o que.
http://www.ajaxlines.com/ajax/stuff/article/super_simple_ajax_for_java_apps_using_jquery_and_json.php
OK, estava a tentar a seguir o teu exemplo, porem o codigo não esta rodando.
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:51)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:116)
org.apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(TagLibraryInfoImpl.java:315)
org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:148)
org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:383)
org.apache.jasper.compiler.Parser.parseDirective(Parser.java:446)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1393)
org.apache.jasper.compiler.Parser.parse(Parser.java:130)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:255)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:103)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:185)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:347)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:327)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:314)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:589)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
Se tirar aquela linha, html roda, mas não aparece nada na pagina; Baxei um exemplo pronto do link que passou mas tambem não funcionou. Mesmo problema
não teria um exemplo de um script que pega um valor boolena de uma classe e utiliza no script? Todos os exemplos que estou achando dando uma “googlada” não funcionam por um erro ou outro, estava tentando juntar um com outro pra ver se funciona mas ainda não consegui… Se conseguir eu posto a resposta.
Se alguem conseguir fazer algo do tipo, ja seria um grande passo:
//Classe java
public class Teste{
private boolean valor = false;
public Teste(boolean valor){
this.valor = valor;
}
public boolean isValor(){
return this.valor;
}
}
//Jquery
valor = $.getValorDeAlgumJeito();
if(valor){
alert('FUNCIONA');
}else{
alert('NAO FUNCIONA');
}
Cara, eu já fiz algo parecido, mas estava usando Struts 1.x
Aí no meu action eu jogava o valor de retorno no HttpSession assim:
httpSession.setAttribute("retorno", true);
e no código Javascript eu consigo pegar esse valor (não sei se é a melhor forma, mas funciona):
var retorno = "${retorno}";
Se ajudar…
ok, eu fiz assim. Fiz a requisição ajax e esperei seu resultado:
//Script na pagina
//Fonte: http://stackoverflow.com/questions/755885/how-do-i-make-jquery-wait-for-an-ajax-call-to-finish-before-it-returns
<script type="text/javascript">
$("#botaoTeste").click(
function(){
$.ajax({
url: "/getRetorno.jsp",
type: 'GET',
cache: false,
timeout: 30000,
error: function(){
alert('ERRO');
return true;
},
success: function(msg){
alert('${rede.retorno}');
}
});
});
</script>
//getRetorno.jsp
<%!
rede.Roteador r;
%>
<%
r = new rede.Roteador("172.21.2.1", "255.255.255.240");
session.setAttribute("rede.retorno", r.isAtivo());
%>
Realmente o valor é atribuido a session, mas o alert que coloquei retorna “em branco”, o codigo funciona, em baixo eu coloquei pra imprimir a session, se eu atulizar a pagina via F5, o [color=blue]rede.retorno[/color] aparece la, mas não consegui recuperar seu valor da session e jogar no script, no caso deveria imprimir o alert como “true” ou “false” né em vez de vazio.
Fiz assim tambem mas deu na mesma, continua o alert vazio
success: function(msg){
var retorno = "${rede.retorno}";
alert(retorno);
}
Consegui! Não foi apenas com JQuery, precisei adicionar o JSON, ficou perfeito
//Script na pagina
<script type="text/javascript">
$("#botaoTeste").click(
function(){
$.ajax({
url: "/getRetorno.jsp",
dataType: "json",
cache: false,
timeout: 30000,
error: function(){
alert('ERRO');
},
success: function(json){
if(json.retorno){
$("#corLinhaPing").css("background-color","lime");
}else{
$("#corLinhaPing").css("background-color","red");
}
}
});
});
</script>
//getRetorno.jsp
<%! rede.Roteador r;
%>
<%
r = new rede.Roteador("172.21.2.99", "255.255.255.240");
//r.isAtivo() = Retorno boolean {return InetAddress.getByName(ip).isReachable(5000)}
out.println("{\"retorno\":" + r.isAtivo() + "}");
%>
Fonte: http://www.blogalizado.com.br/ajax-e-json-com-jquery-e-php/