2011-01-17 4 views
1

У меня есть сервлет, который помещает что-то в запрос, но я не могу назвать его с помощью jstl. Что я делаю не так?JSTL как выводить данные из запроса

<%@ page import="beans.Patient"%> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<%@ taglib uri='http://java.sun.com/jstl/fmt' prefix='fmt' %> 
<jsp:useBean id="patBean" class="beans.Patient" scope="session"/> 
<c:set var="patientName" value="${patient.name}"/> 

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
</head> 
<body> 
test 
<form action="PatientAction" method="post"> 
<input type="text" name="patientId" id="patientId"></input> 
<input type="submit"/> 
</form> 

<c:out value="${patientName}" /> 
<c:out value="${patBean.name}" /> 

ответ

4

Вам не нужно беспокоиться о <useBean>, когда вы используете JSTL, просто обратитесь к компоненту напрямую. Так что, если ваш сервлет поставить Patient в сессии, вы можете получить его имя с помощью:

<c:out value="${patient.name}" /> 
+0

он просто выходит как текст в веб-странице, как это : "$ {patient.name}" – code511788465541441

+2

@ user521180: Это означает, что JSP EL не включен для вашего веб-приложения. См. Http://stackoverflow.com/questions/2168832/expression-language-in-jsp-not-working/2168974#2168974 – skaffman

+1

Спасибо. это сработало. получается, что я не использовал 2.4 на своем web.xml – code511788465541441

1

атрибуты запроса доступны через имя, в которое они были помещены. Если у вас есть request.setAttribute("foo", fooValue), то он доступен через ${foo}. Это верно, если вы находитесь в рамках одного запроса. Это означает, что сервлет должен сделать вперед, а не redirect. Если происходит перенаправление, это новый запрос, и старые значения теряются.

+0

он просто выходит как текст «$ {patient.name}» – code511788465541441

Смежные вопросы