"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) имейте в виду, что атрибуты должны быть преобразованы.
Кроме того, нет специфичных для сервлета атрибутов и нет параметров сеанса.
Надеюсь, это поможет вам.