2013-02-22 3 views
6

У меня есть HTTP-запрос javax.servlet.http.HttpServletRequest, который передает значение, которое будет использоваться в некотором коде, обрабатываемом в веб-службе Java, используя JAX-RS. Функция POST в Java потребляет application/json. В запрос передаются два возможных значения, вызывают один X, а другой Y, предположим, что оба являются строками. Для запроса требуется не менее одно из двух возможных значений, которые считаются действительными.Отсутствующие элементы в HTTP-запросе - нулевые или пустые?

Когда приходит запрос, если X обеспечивается и Y остается из запроса целиком, что такое правильный способ проверить, если Y есть? Не могли бы вы проверить, есть ли Y.isEmpty() или Y == null? Предоставление X не гарантирует, что Y присутствует, и наоборот.

+1

Вы говорите в контексте API сервлета? То есть вы говорите о 'ServletRequest # getParameter()' и так далее? Просьба уточнить/пометить хотя бы задействованный API. В стандартном Java SE API этого нет. – BalusC

+1

обновил вопрос с дополнительной информацией. это java-веб-сервис, использующий JAX-RS, и определенная функция потребляет JSON – Walls

+0

. В будущих вопросах, связанных с API 'javax.servlet. *', используйте тег '[сервлеты \ '. – BalusC

ответ

13

Если параметр не задан вообще, как так ,

http://example.com/context/servlet?x=foo 

тогда он будет возвращать null:

String x = request.getParameter("x"); // "foo" 
String y = request.getParameter("y"); // null 

Если параметр задан, но не имеет значения, как это так,

http://example.com/context/servlet?x=foo&y 

, то он вернет пустую строку:

String x = request.getParameter("x"); // "foo" 
String y = request.getParameter("y"); // "" 

имеет смысл, не так ли?

+0

Спасибо за разъяснение, этот ответ именно то, что мне нужно. Еще раз спасибо, и я буду помнить тег сервлетов в будущем. (согласен, когда это позволит мне) – Walls

+0

Добро пожаловать. – BalusC

1

тесты, если параметр присутствует в запросе

httpServletRequest.getParameter("Y") == null 

Следующий код проверяет значение параметра, если он присутствует

if (httpServletRequest.getParameter("Y") != null) 
{ 
    String value = httpServletRequest.getParameter("Y"); 

    // Put your test code here. Include a empty value check 
} 
+0

Вы должны переместить строку 'String value = httpServletRequest.getParameter (" Y ");' перед предложением if, чтобы запрос не нужно дважды оценивать. –

+1

Код не предназначен для одного блока кода. Я только указываю, как проверить, прошел ли параметр. А затем также как использовать это, чтобы проверить значение параметра. – mightyrick

+3

О, я вижу, поэтому запрос параметра дважды - более дидактический выбор, чтобы показать, что с ним делать; Я согласен, это делает цель каждой строки более четкой. –

Смежные вопросы