JSP Получить значение свойства

Я очень новичок в JSP, поэтому мне нужна ваша помощь. Google не дал мне то, что я искал, возможно, я просто ввел неправильный поисковый запрос. Так что, пожалуйста, простите меня, но я думаю, что это действительно глупый вопрос, однако, кажется, в сети ничего об этом нет.

Я создал экран входа в систему (работает нормально), учетные данные проверяются (работает нормально), а главный экран получает DTO, который следует оценить.

Как видите, есть тег jsp:getProperty, он отлично работает, если я попытаюсь получить доступ к имени параметра, используя jsp:getProperty. Я хочу сделать некоторые дополнительные проверки, поэтому я попытался получить доступ к свойству в разделе ‹% %>, но там оно равно null. Есть ли способ получить доступ к объекту в разделе ‹‹% %> после его извлечения с помощью тега jsp:useBean?

Вот основной файл jsp:

 <?xml version="1.0" encoding="ISO-8859-1" ?>
 <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
 pageEncoding="ISO-8859-1"%>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
 <%@ page import="de.daniel.docmanager.dto.User"  %>   
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"   
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 </head>
 <body>
 <jsp:useBean id="user" class="de.daniel.docmanager.dto.User" scope="session">  
 </jsp:useBean>

<%
String name =  user.getName();
System.out.println("name: " + name);  //<= name is null
%>

Hello <jsp:getProperty property="name" name="user"/> //<= works fine
</body>
</html>

Спасибо большое за вашу поддержку. Я действительно ценю это.


person Daniel    schedule 14.07.2013    source источник
comment
Избегайте Scriptlets и useBean, переходите на EL и JSTL!   -  person AllTooSir    schedule 14.07.2013
comment
хорошо, хорошая идея, но не могли бы вы подсказать? Я хочу проверить, установлен ли пользовательский объект, если нет, я хочу перенаправить на страницу входа. Как бы вы это сделали?   -  person Daniel    schedule 14.07.2013
comment
Вы можете сделать это с помощью простого сервлета или даже фильтра.   -  person AllTooSir    schedule 14.07.2013


Ответы (1)


Не рекомендуется использовать скриптлеты в JSP. Прочитайте этот хороший SO Q&A: Как избежать кода Java в JSP-файлы? на эту тему .


Возвращаясь к вашей проблеме. Вы определяете bean-компонент с помощью Standard Action как:

<jsp:useBean id="user" class="de.daniel.docmanager.dto.User" scope="session">  
</jsp:useBean>

Тег useBean будет искать экземпляр класса "de.daniel.docmanager.dto.User" в session . Если экземпляра еще нет, он создаст новый экземпляр "de.daniel.docmanager.dto.User" и поместит его в папку session.

Вы должны получить объект из области session:

<%
 String name =  ((de.daniel.docmanager.dto.User)session
                                      .getAttribute("user")).getName();
 System.out.println("name: " + name);  
%>

Я хочу сделать некоторые дополнительные проверки, поэтому я попытался получить доступ к свойству в разделе ‹% %>

Для этой цели вы можете использовать JSTL или другую библиотеку тегов.

person AllTooSir    schedule 14.07.2013
comment
Большое спасибо, ребята, вы спасли мою ночь. Я очень ценю это. - person Daniel; 15.07.2013