"request.getParameter" возвращает "-1" для несуществующих параметров URL

Я использовал следующее в файле JSP для получения параметра URL. Этот файл JSP представляет веб-страницу с формой, которую я проверяю с помощью валидатора Struts.

<% String tempVal= (String)request.getParameter("parm");%>

Когда форма изначально загружается, tempVal значение параметра null если нет параметра URL с именем parm,
Затем я отправляю форму с некоторыми неверными данными в форме, и приходят на ту же страницу (после нажатия Validate метод в ActionForm класс) с проверкой сообщений об ошибках.
Но на этот раз tempVal значение параметра -1,
Следующее мое Validate метод в ActionForm учебный класс.

@Override
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request)
{
    ActionErrors errors = null;
    errors = super.validate(mapping, request);
    String temp2 = request.getParameter("param3");
    if(temp2 == null){
        errors.add("some Error");
    }
    return errors;
}

Есть ли причина такого поведения? заранее спасибо

1 ответ

Ваш параметр URL должен быть в строковом формате, если вы пытаетесь получить запрос в другой форме.

Но если ваш параметр Url не в строковом формате, я рекомендую использовать getAttribute

Здесь происходит то же самое, потому что вы пытаетесь получить параметр Parameter из объекта и десять преобразовать его в строку, что даст вам -1.

Первая страница

  //first page: first.jsp
  <% request.setAttribute("PAGE", "param");%> 
  <jsp:forward page="/second.jsp"/>

и second.jsp:

  <%=request.getAttribute("PAGE")%>

Важно знать, что атрибуты не являются параметрами. Тип возвращаемого значения для атрибутов - Объект, тогда как тип возвращаемого значения для параметра - Строка. При вызове метода getAttribute(String name) имейте в виду, что атрибуты должны быть преобразованы.

Кроме того, нет специфичных для сервлета атрибутов и нет параметров сеанса.

Надеюсь, это поможет вам.

Другие вопросы по тегам