2014-01-06 2 views
1

У меня есть класс, который я пытаюсь получить значение переменной на моей странице jsp, но поскольку это синглтон, у него, похоже, проблемы.jsp: useBean with Simple Singleton

MyController.java

public class MyController { 

    private static volatile MyController myController = new MyController(); 
    private Integer id; 

    private MyController() { 
    } 

    public static MyController MyController() { 
     return myController; 
    } 

    public void display() { 
     id = 1; 
    } 

} 

test.jsp:

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 

<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>Test</title> 
    </head> 
    <body> 
     <jsp:useBean id="myController" scope="application" class="test.controller.MyController"/> 
     <p> 
      The ID is: ${myController.id}! 
     </p> 
    </body> 
</html> 

Ошибка:

org.apache.jasper.JasperException: java.lang .Clas sNotFoundException: org.apache.jsp.test_jsp

Кроме того, я не знаю, как назвать display() метод со страницы JSP, чтобы инициализировать переменную id?

ответ

0

Вы не должны использовать jsp: useBean больше. BTW, jsp: seBan ожидает, что публичный конструктор no-arg создаст экземпляр компонента, и вы не хотите новый экземпляр, поскольку bean должен быть singleton.

Просто используйте сервлет, который инициализируется во время развертывания или контекста слушателя для хранения одноплодной в области приложения, и использовать его непосредственно, используя EL с вашей JSP:

servletContext.setAttribute("myController", MyController.getInstance()); 
Смежные вопросы