2014-09-14 3 views
0

Я пытаюсь вызвать jsp-код в javascript.org.apache.jasper.JasperException: невозможно компилировать класс для 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

Это выглядит так, как будто у вас есть путаница в том, когда и где выполняется код 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 на сервере.

Если вы действительно хотите выполнить код Java на сервере во время вызова вашей функции JavaScript, вам нужно будет использовать вызов AJAX. См. this question для получения дополнительной информации о том, как это сделать.

Смежные вопросы