我怎样才能在javascript中使用jsp?

时间:2014-12-06 15:40:24

标签: java jsp button onclick neo4j

我有一个与我的neo4j数据库建立连接的jsp文件。它还可以在网页上打印查询。这是我的代码:

<%!
public void test(JspWriter out)  
throws IOException  
{  
GraphDatabaseService graphDb = new GraphDatabaseFactory().newEmbeddedDatabase("C:\\Users\\User\\Documents\\Neo4j\\default.graphdb" ); 
ExecutionEngine engine = new ExecutionEngine(graphDb, StringLogger.SYSTEM);

String query = "MATCH (name {name: 'Tom Hanks'}) RETURN name";
ExecutionResult result = engine.execute(query);

out.println(result.dumpToString());

graphDb.shutdown();

}  
%>  
<html>  
<head><title>Test</title></head>  
<body>  
<input type="text" id="userInput">
<button onclick="zoek()">Zoek</button>
<p id="demo"><% test(out); %></p>
</body>  
</html>

上面的代码运行正常。它向我展示了有关'汤姆汉克斯'的信息。 但是,当我点击按钮时,我想收到这些信息。所以我使用了java脚本:

<script LANGUAGE="JavaScript">
    function zoek(){

    document.getElementById("demo").innerHTML = <% test(out); %>;
    }       
</script>

我认为这会奏效,但遗憾的是它没有。在控制台日志中,我在页面加载时收到以下消息。

“Uncaught SyntaxError:Unexpected token |”

如果我点击按钮就会显示

“未捕获的ReferenceError:未定义zoek”

我希望你能帮助我。

2 个答案:

答案 0 :(得分:0)

您不能在JavaScript文件中使用JSP指令,因为JSP编译是在服务器上完成的,而不是在客户端上完成的。 JavaScript文件按原样提供。

如果您必须在JavaScript文件中访问服务器中的某些内容集,那么一个“丑陋”的解决方法是在JSP中添加<script>标记并声明var myVar = <% test(out); %>;。然后在JavaScript文件中使用myVar。但请注意文档和JavaScript的加载顺序。

<script>var myVar = <% test(out); %>;</script>

我不推荐这种方法,而是通过使用jQuery(http://api.jquery.com/jquery.getjson/)的AJAX调用通过REST API异步获取数据。

答案 1 :(得分:0)

您应该使用JSP表达式而不是scriptlet。另外,为方法使用返回类型的String。请试试这个演示代码。为了测试,我为您的数据库代码替换了一个简单的String。

<%!
   public String test(){  
      return "Tom Hanks is an actor"; 
   }  
%>  
<html>  
<head>
<title>Test</title>
<script type="text/javascript">
function zoek(){
     alert("test");
     document.getElementById("demo").innerHTML = "<%=test()%>";
}  
</script>
</head>  
<body>  
<input type="text" id="userInput">
<button onClick="zoek()">Zoek</button>
<p id="demo"></p>
</body>  
</html>