我对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>
非常感谢您的支持。我真的很感激。
答案 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或某些标记库来实现此目的。