JSP获取属性的价值

时间:2013-07-14 17:37:05

标签: java jsp java-ee scriptlet usebean

我对JSP很新,所以我需要你的帮助。谷歌没有给我我想要的东西,我可能只是输入错误的搜索词。所以请原谅我,但我认为这是一个非常愚蠢的问题,但似乎没有任何关于它的网络。

我创建了一个登录屏幕(工作正常)并且检查了凭证(工作正常),主屏幕获得了应该评估的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>

非常感谢您的支持。我真的很感激。

1 个答案:

答案 0 :(得分:2)

在JSP中使用 scriptlet 是一种不好的做法。在这个主题上阅读这个很好的SO Q&A : How to avoid Java Code in JSP-Files?


回到你的问题。您正在使用标准操作定义bean:

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

useBean标记将在session中查找“de.daniel.docmanager.dto.User”类的实例。如果实例尚未存在,它将创建“de.daniel.docmanager.dto.User”的新实例,并将其放入session

您必须从session范围中检索对象:

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

我想做一些额外的检查,因此我试图访问&lt; %%&gt;内的属性。节

您可以使用JSTL或某些标记库来实现此目的。