org.apache.jaster.JasperException:无法编译JSP:的类

org.apache.jasper.JasperException: Unable to compile class for JSP:

本文关键字:编译 JSP 的类 jaster JasperException org apache      更新时间:2023-09-26

我正在尝试用javascript调用jsp代码。

错误如下

org.apache.jaster.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";

请给我提供这个问题的合适的解决方案。

在我看来,您似乎对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调用。有关如何执行此操作的详细信息,请参阅此问题。