2013-02-22 12 views
6

JAX-RSを使用してJava Webサービスで処理されるコードで使用される値を渡すHTTPリクエストjavax.servlet.http.HttpServletRequestがあります。 JavaのPOST関数はapplication/jsonを消費しています。 2つの可能な値が要求に渡され、Xともう1つはYとなり、どちらもストリングとみなされます。この要求には、少なくともの2つの値のうちの1つが「有効」とみなされる必要があります。HTTPリクエストの要素がない - 空または空ですか?

Xが提供され、Yが要求から完全に除外されている場合、Yが存在するかどうかを確認する正しい方法は何ですか? Y.isEmpty()またはY == nullかどうかを確認しますか? Xを提供しても、Yが存在することを保証するものではなく、その逆もあります。

+1

サーブレットAPIのコンテキストで話していますか?私。あなたは 'ServletRequest#getParameter()'などについて話していますか?少なくとも関連するAPIを明確化/タグ付けしてください。つまり、標準Java SE APIではそのようなことはありません。 – BalusC

+1

は詳細情報を更新しました。 JAX-RSを利用したJava Webサービスで、特定の関数がJSONを消費しています – Walls

+0

APIのjavax.servlet。*に関する今後の質問では、[servlets]タグを使用してください。 – BalusC

答えて

13

存在する場合、次のコードは、パラメータの値をテスト

01:、

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

if文の前に 'String value = httpServletRequest.getParameter(" Y ");を移動して、要求を2回評価する必要がないようにする必要があります。 –

+1

コードは単一のコードブロックではありません。私はパラメータが渡されているかどうかをチェックする方法を指摘しています。そして、それを使ってパラメータの値をチェックする方法も。 – mightyrick

+3

ああ、わかりました。そのため、パラメータを2回要求することは、それをどうするかを示すための教訓的な選択です。私は同意する、これは各ラインの目的をより明確にする。 –

関連する問題