JSP doPost getAtribute пустое значение - PullRequest
0 голосов
/ 30 мая 2010

Я хочу передать значение сервлету, но получаю нулевое значение.

<jsp:useBean id="Helper" class="model.Registration" scope="request"/>
<form action="/Project/Registration" method="post" enctype="multipart/form-data">
    <input type="text" size="20" name="name" value="<%=Helper.getName()%>">
    <input type="submit">
</form>

protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    Registrationh2 = (Registration) request.getAttribute("Helper");
    if(h2!=null){
       System. out.println(h2.getName());
    }
    else
        System. out.println("NULL");        
}

Что-то не так с моим кодом?

Ответы [ 3 ]

1 голос
/ 30 мая 2010

Область действия объекта регистрации - запрос . Так что он не будет доступен в сервлете, который является новым запросом. Вы можете получить компонент, установив сеанс. Или сделайте область для сеанса.

1 голос
/ 31 мая 2010

Независимо от объема, jsp:useBean будет не работать, если вы используете кодирование формы multipart/form-data. Эта кодировка требуется для обработки загрузки файлов, и поддержка для анализа этой кодировки , а не встроена в JSP / Servlet таким прозрачным образом, что request.getParameter() и консорциумы вернут желаемое значение. Новый API Servlet 3.0, однако, поддерживает эту кодировку формы, но, поскольку вместо этого вам потребуется request.getPart(), это не будет работать и с jsp:useBean.

Как уже отвечали несколько раз в связанных вопросах, которые вы разместили ранее, вам нужно Apache Commons FileUpload для анализа multipart/form-data запроса. Однако вы можете создать Filter, который прозрачно анализирует и заменяет исходный request в случае multipart/form-data запросов. Вы можете найти здесь статью блога об этом, вместе с примерами кода.

0 голосов
/ 30 мая 2010

Я предполагаю, что вы хотите передать имя String из модели регистрации. Если это так, вам нужно получить, используя следующий код.

String registrationName = request.getParameter("name");

Кроме того, удалите энктип как составную часть. Он используется при загрузке любых файлов с клиента.

...