我试图在javascript中调用jsp代码。
错误如下
org.apache.jasper.JasperException:无法为JSP编译类:
An error occurred at line: 16 in the jsp file: /testng_index.jsp
String cannot be resolved
13: var mai=document.getElementById("j");
14: //mai.value = mai.value.toUpperCase();
15: var m=mai.value;
16: <%=String value=document.writeln(m)%>
17: var mo= <%= new PlaneBo().getOwnerId(value)%>;
18: // document.writeln(mo);
19: if(mo==0)
这是代码
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" import="com.ams.services.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<script type="text/javascript" language="javascript">
function emailCheck()
{
var mai=document.getElementById("j");
//mai.value = mai.value.toUpperCase();
var m=mai.value;
<%=String value=document.writeln(m)%>
var mo= <%= new PlaneBo().getOwnerId(value)%>;
// document.writeln(mo);
if(mo==0)
{
// document.writeln(m);
var tab = document.getElementById("t");
var row = tab.insertRow(3);
var cell1=row.insertCell(0);
var cell2=row.insertCell(1);
var inpt= document.createElement("input");
inpt.setAttribute("name","jho");
inpt.setAttribute("type","text");
cell1.innerHTML="Name";
请为我提供这个问题的合适解决方案。
答案 0 :(得分:0)
在我看来,您似乎对Java和JavaScript代码执行的时间和地点感到困惑。
当浏览器请求页面时,Java代码和JSP在服务器上运行。服务器对HTML和JavaScript一无所知。就服务器而言,这是您的JSP页面:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" import="com.ams.services.*" %>
TEXT
<%=String value=document.writeln(m)%>
TEXT <%= new PlaneBo().getOwnerId(value)%>
TEXT
服务器并不关心标记为TEXT
的部分中的内容;它只是将它们直接发送到浏览器。但它确实关心<%@ ... %>
和<%= ... %>
标签中的内容。
您收到错误,因为服务器无法理解document.writeln(m)
。它不知道任何名为document
的对象,因此无法评估document.writeln(m)
。碰巧在JavaScript中有一个对象document
和一个函数document.writeln
,但这是无关紧要的。服务器对JavaScript一无所知。
在页面完成发送到浏览器之前,JavaScript代码才会执行。调用函数时未显示:可能是在输入字段的值已更改或单击按钮之后。 JavaScript在浏览器中运行,而不是在服务器上运行,因此它无法直接调用服务器上的Java代码。
如果您真的想在调用JavaScript函数期间在服务器上执行某些Java代码,则需要使用AJAX调用。有关如何执行此操作的详细信息,请参阅this question。