2014-02-09 25 views
0

我有一个互相协作的JSP和Java类。如何在Java类中激活JavaScript函数?

我在我的Java类中有一个布尔变量。 我想用AJAX随时查看它,如果它的值已更改为true。 JavaScript警报显示一条消息。

在JSF中,有这样的事情:

<h:outputScript rendered="#{categoryBean.showCategoryNameAlert}"> 
    alert("CategoryName already exist!"); 
</h:outputScript> 

,但我不知道如何做到这一点的JSP?

+0

请参阅[与JSF使用AJAX(http://docs.oracle.com/javaee/7/tutorial/doc/jsf-ajax.htm# GKIOW) –

+0

tnx,但我不想要JSF,我想在JSP –

回答

1

你可以试试这个代码 -

前端

<!DOCTYPE html> 
<html> 

<head> 
<meta charset="UTF-8"> 

<title></title> 

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
    setInterval(function(){ 
     $.get('/backEnd',function(responseText) { 
      if(responseText == 'true') { 
       alert("Variable has been set"); 
      }     
     }); 
    },1000); 
}); 
</script> 
</head> 

<body> 
</body> 

</html> 

后端

@WebServlet(name = "checkerServlet", urlPatterns = { "/backEnd" }) 
public class CheckerServlet extends HttpServlet { 
    private YourClass yourClass; 

    @Override 
    public void init() { 
     yourClass = new YourClass(); 
    }  

    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {   
     response.setContentType("text/plain"); 
     PrintWriter writer = response.getWriter(); 

     if(yourClass.getBooleanValue) { 
      writer.write("true");     
     } else { 
      writer.write("false"); 
     } 

     writer.close(); 
    } 

    @Override 
    protected void doPost(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException { 
     doGet(request, response); 
    } 
} 

例一类具有可变boolean -

public class YourClass { 
    private static boolean booleanValue = false; 

    public void setBooleanValue() { 
     booleanValue = true; 
    } 

    public void resetBooleanValue() { 
     booleanValue = false; 
    } 

    public boolean getBooleanValue() { 
     return booleanValue; 
    } 
    ... 
} 

注意。

如果您不使用servlet,则可以使用此调用。

<%@ page import="fullpackagename.YourClass" %> 
<jsp:useBean id="yourClass" scope="request" class="fullpackagename.YourClass" /> 

<% 
    YourClass yourClass = new YourClass(); 
    // check your variable here 
%> 

将它添加到表示层。

自动刷新代码jsp -

<%response.setIntHeader("Refresh", 1); %>

0

您需要一个监听特定url的servlet。给它“/检查”。

在servlet的

if(category.categoryName != null) // or any thing you want 
    out.write("true"); // out is response outputstream 

在JSP:对于 “/勾选” 所有的时间要求,并警告若见真Ajax请求。

+0

中这样做,谢谢,但我有一个JSP和一个Java类,没有servlert –