2013-02-22 9 views
6

Mam żądanie HTTP javax.servlet.http.HttpServletRequest, które przekazuje wartość, która ma być używana w niektórych kodach obsługiwanych w usłudze WWW Java za pomocą JAX-RS. Funkcja POST w Javie zużywa application/json. Istnieją dwie możliwe wartości, które należy przekazać do żądania, zadzwoń jeden X i drugi Y, zakładając, że oba są łańcuchami. Żądanie wymaga wartości co najmniej jednej z dwóch możliwych wartości, które należy uznać za "prawidłowe".Brakujące elementy w żądaniu HTTP - puste lub puste?

Gdy przychodzi żądanie, jeśli podano X, a Y całkowicie pominięto w żądaniu, jaki jest właściwy sposób sprawdzenia, czy istnieje Y? Czy sprawdzisz, czy jest to Y.isEmpty() lub Y == null? Pod warunkiem, że X nie gwarantuje, że jest Y i vice versa.

+1

Czy mówisz w kontekście API Servlet? To znaczy. mówisz o 'ServletRequest # getParameter()' i tak dalej? Proszę wyjaśnić/oznaczyć przynajmniej zaangażowany interfejs API. Nie ma czegoś takiego w standardowym API Java SE. – BalusC

+1

zaktualizował pytanie, aby uzyskać więcej informacji. jest to usługa WWW Java wykorzystująca JAX-RS, a konkretna funkcja pochłania JSON – Walls

+0

. W przyszłych pytaniach dotyczących 'javax.servlet. *' API, użyj znacznika '[servlets]'. – BalusC

Odpowiedz

13

Jeśli parametr nie jest określony w ogóle jak tak ,

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

następnie powróci null:

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

Jeśli parametr jest określony, ale nie mają wartości, jak tak,

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

następnie zwróci pusty ciąg:

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

sens, prawda?

+0

Dzięki za wyjaśnienie, ta odpowiedź jest dokładnie tym, czego potrzebowałem. Jeszcze raz dziękuję i zapamiętam etykietę servlets w przyszłości. (zaakceptuje, kiedy mi pozwoli) – Walls

+0

Nie ma za co. – BalusC

1

Testy jeśli parametr jest obecny we wniosku

httpServletRequest.getParameter("Y") == null 

Poniższy kod sprawdza wartość parametru, jeśli jest obecny

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

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

Powinieneś przenieść wiersz 'String value = httpServletRequest.getParameter (" Y ");' before the-if, więc żądanie nie musi być dwukrotnie oceniane. –

+1

Kod nie ma być pojedynczym blokiem kodu. Wskazuję tylko, jak sprawdzić, czy parametr został przekazany. A następnie także, jak użyć tego do sprawdzenia wartości parametru. – mightyrick

+3

Och, widzę, więc żądanie dwukrotnego parametru jest bardziej dydaktycznym wyborem, aby pokazać, co z nim zrobić; Zgadzam się, dzięki temu cel każdej linii jest jaśniejszy. –