Как запустить функцию, объявленную в JSP одним нажатием кнопки - PullRequest
0 голосов
/ 05 мая 2018

Я пытаюсь запустить функцию, которую я объявил в jsp (<%!%>), Когда нажимаю на кнопку. я не хочу загружать новую страницу, я хотел бы остаться на той же странице и просто выполнить что-то.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" import="hitchhike.*"%>
<!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>Loading Route</title>
</head>
<body>
<%! 
    String login;
    String adresseOrigin;
    String adresseDestination;
    Adresse origin;
    Adresse destination;
    Itineraire itineraire;
%>
<%
    login=request.getParameter("login");
    adresseOrigin=request.getParameter("inputOrigin");
    adresseDestination=request.getParameter("inputDestination");
    origin=new Adresse(adresseOrigin);
    destination=new Adresse(adresseDestination);
    origin.generateAdresse();
    destination.generateAdresse();
    itineraire=new Itineraire(origin, destination);
    itineraire.calculItineraire();
%>
<%=origin.getAdresse() %>
</br>
<%=destination.getAdresse() %>
</br>
<%=itineraire.getTemps() %>
    <button type="submit" class="btn btn-primary" onclick="valider()">Validate</button>
</body>
</html>
<%!
void valider(){
    RouteDAO routeDAO=new RouteDAO();
    Route route=new Route(login, 
            origin.getAdresse(), 
            ""+origin.getcoordX(), 
            ""+origin.getCoordY(), 
            destination.getAdresse(),
            ""+destination.getcoordX(),
            ""+destination.getCoordY(),
            itineraire.getTempsSec()
            );
    routeDAO.addRoute(route);
}
    %>

это мой код, функция, которую я хотел бы запустить - это функция в конце (valider ()). но когда я нажимаю на кнопку, у меня появляется ошибка "Valider не определен" я бы не стал добавлять jquery.

спасибо за помощь

1 Ответ

0 голосов
/ 05 мая 2018

Событие onclick может быть связано только с функцией JS / Jquery, а код в <%! ... %> компилируется в java (внутренний код).

Вы должны будете переместить функцию в другой Java-код JSP / backend, сделать вызов AJAX как часть функции события onclick.

Создайте новый JSP, скажем validator.jsp на том же уровне каталога. validator.jsp будет иметь:

<%!
    RouteDAO routeDAO=new RouteDAO();
    Route route=new Route(login, 
            origin.getAdresse(), 
            ""+origin.getcoordX(), 
            ""+origin.getCoordY(), 
            destination.getAdresse(),
            ""+destination.getcoordX(),
            ""+destination.getCoordY(),
            itineraire.getTempsSec()
            );
    routeDAO.addRoute(route);
%>

добавить функцию JS, JQuery в реальный JSP, например:

function validator() {
    $.ajax({
        url: 'validator.jsp',  // Change the relative path if needed 
        type: "GET", // This is optional and defaults to GET as well
        error : function(){ 
            console.log('Error in the AJAX call'); 
        },
        success: function(msg){      
                console.log(msg);
        }
}
...