Смущен по поводу предупреждения «Не удается разрешить переменную» - PullRequest
0 голосов
/ 04 мая 2019

В login.java Я использую req.setAttribute("username", req.getParameter("username")); и в welcome.jsp Я использую Hello ${username}, но Intellij выдает мне предупреждение:

Невозможно разрешить переменную 'username'

Переменная работает.Почему я получаю это предупреждение?

login.java

package ch.yourclick.zt;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/login")
public class Login extends HttpServlet {
    @Override
    public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setAttribute("username", req.getParameter("username"));
        req.setAttribute("password", req.getParameter("password"));
        req.getRequestDispatcher("/welcome.jsp").forward(req, resp);
    }
}

Ответы [ 2 ]

1 голос
/ 13 мая 2019

У вас есть 2 варианта:

Вариант 1

<% String username = (String) request.getAttribute("username"); %>
<%= username %>

Вариант 2

${requestScope.username}
1 голос
/ 05 мая 2019

Может быть вашим login.java вы используете sendRedirect для страницы welcome.jsp, и она потеряла переменную области видимости запроса.

response.sendRedirect("welcome.jsp"); 

В login.java вам нужно изменить это, чтобы сохранить переменную username

RequestDispatcher requestDispatcher = request.getRequestDispatcher("welcome.jsp");
requestDispatcher.forward(request, response);

Для предупреждения предупреждения вы можете обновить настройки для Intellij> Setting> Code Inspection

https://www.jetbrains.com/help/idea/code-inspection.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...