Что возвращает request.getParameter?
//index.jsp
<form method="post" action="backend.jsp">
<input type="text" name="one" />
<input type="submit value="Submit" />
</form>
В backend.jsp, что делает request.getParameter( "один" ); вернуться?
request.getParameter("one").getClass().getName();
возвращает java.lang.String, поэтому он должен быть строковым справа?
Однако я не могу сделать
String one = request.getParameter("one");
if (!"".equals(one)) {}
или
if (one != null) {}
Это очевидно, потому что переменная one не возвращает null. Является
if (one.length() > 0) {}
только путь, или есть лучшие решения или лучший подход? Я рассматриваю оба решения как jsp. Использование сервлета (хотя jsp является сервлетом) - это другой вариант использования в этом сценарии.
Ответы
Ответ 1
В Javadoc:
Возвращает значение параметра запроса как String или null, если параметр не существует.
Обратите внимание, что можно отправить пустой параметр - такой, что параметр существует, но не имеет значения. Например, я мог бы включить &log=&somethingElse
в URL-адрес, чтобы включить ведение журнала, без необходимости указывать &log=true
. В этом случае значением будет пустая строка (""
).
Ответ 2
String onevalue;
if(request.getParameterMap().containsKey("one")!=false)
{
onevalue=request.getParameter("one").toString();
}
Ответ 3
Оба if (one.length() > 0) {}
и if (!"".equals(one)) {}
будут проверять пустой параметр foo, а пустой параметр - это то, что вы получите, если форма отправлена без значения в текстовом поле foo
.
Если у вас есть возможность использовать язык выражения для обработки параметра, вы можете
войдите в него с выражением empty param.foo
.
<c:if test='${not empty param.foo}'>
This page code gets rendered.
</c:if>