Вы, кажется, неправильно поняли работу и цель jsp:useBean
.
Прежде всего, вы объявили, что компонент находится в области действия сеанса, и заполняете его всеми параметрами текущего запроса.
<jsp:useBean id="user" class="com.hermes.data.RateCode_" scope="session">
<jsp:setProperty name="user" property="*"/>
</jsp:useBean>
Таким образом, этот компонент сохраняетсякак атрибут сеанса с именем user
.Вам нужно получить его в сервлете как атрибут сеанса, а не как атрибут запроса.
RateCode_ user = (RateCode_) request.getSession().getAttribute("user");
(кстати, user
это ужасное и запутанное имя атрибута, я быпереименуйте это rateCode
или что-то, без этого нечетного _
в конце)
Однако, это не будет содержать ничего.getCode()
и getDescription()
вернут null
.<jsp:setProperty>
имеет , а не , заполнил его всеми параметрами запроса, но в тот момент вы пытаетесь получить к нему доступ в сервлете.Это будет сделано только тогда, когда вы отправите запрос, содержащий параметры, обратно на страницу JSP.Однако это происходит за пределами бизнес-логики в сервлете.
Вы должны собрать их как параметры запроса самостоятельно.Сначала избавьтесь от всей вещи <jsp:useBean>
в JSP и выполните следующие действия в методе doPost()
сервлета:
RateCode_ user = new RateCode_();
user.setCode(request.getParameter("code"));
user.setDescription(request.getParameter("description"));
// ...
request.setAttribute("user", user); // Do NOT store in session unless really necessary.
, а затем вы можете получить к нему доступ в JSP, как показано ниже:
<input type="text" name="code" value="${user.code}" />
<input type="text" name="description" value="${user.description}" />
(это чувствительно только к атакам XSS , вы хотите установить JSTL и использовать fn:escapeXml
)
Нет, вам не нужно <jsp:useBean>
в JSP.Не делайте этого, это практически не имеет значения, когда вы используете подход MVC (уровень 2) с реальными сервлетами.<jsp:useBean>
полезен только для проектирования MV (MVC level 1).Чтобы сохранить стандартный код сбора параметров запроса, рассмотрите возможность использования инфраструктуры MVC или Apache Commons BeanUtils.См. Также ссылки ниже для подсказок.
См. Также: