イム:jspを使用してrequest.getHeaderの値に対してテストする方法は?変数を設定
<% String userAgent = request.getHeader("user-agent");%>
私は
<c:choose></c:choose>
イムを使用してそれを設定する方法がわからのuserAgentに対するさまざまなシナリオをテストしない方法は?
イム:jspを使用してrequest.getHeaderの値に対してテストする方法は?変数を設定
<% String userAgent = request.getHeader("user-agent");%>
私は
<c:choose></c:choose>
イムを使用してそれを設定する方法がわからのuserAgentに対するさまざまなシナリオをテストしない方法は?
スクリプトレットとtaglibs/ELを混在させたくありません。それらは同じ範囲で実行されません。
すべてのリクエストヘッダーは、暗黙的にマップされたオブジェクト${header}
によって利用可能です。 user-agent
ヘッダー名には-
という特殊文字が含まれているため、${header.user-agent}
が期待どおりに機能しないため、引用符で囲んだ中かっこ表記[]
を使用する必要があります。
${header['user-agent']}
だから、これは実行する必要があります。
<c:choose>
<c:when test="${fn:contains(header['user-agent'], 'Gecko')}">
You're pretending to use a Gecko based browser.
</c:when>
<c:when test="${fn:contains(header['user-agent'], 'MSIE')}">
You're pretending to use a MSIE based browser.
</c:when>
<c:when test="${fn:contains(header['user-agent'], 'Webkit')}">
You're pretending to use a Webkit based browser.
</c:when>
<c:otherwise>
It's not clear which browser you're pretending to use.
</c:otherwise>
</c:choose>
無関係を問題に:この方法は、コードのにおいであるユーザエージェントヘッダをチェックします。ユーザーエージェントのヘッダーはクライアントによって完全に制御されており、簡単に全く異なる値になりすますことができます(上記のコード例では "偽装"という言葉を使用しています)。実際の機能要件を正しく解決するには、実際の機能要件についてもう少し詳しく説明したいと思います。
たとえば、JavaScriptではブラウザ検出よりもfeature detectionを選択する必要があります。
メディアタイプに基づいて特定のスタイルシートをロードする場合は、media
attributeを使用する必要があります。例えば。
<link rel="stylesheet" href="screen.css" media="screen,projection,tv" />
<link rel="stylesheet" href="smartphone.css" media="only screen and (max-device-width:480px)"/>
<link rel="stylesheet" href="handheld.css" media="handheld" />
<link rel="stylesheet" href="print.css" media="print" />
それとも、エンドユーザーにユーザーエージェントヘッダーで見つかった情報のユーザーフレンドリーな要約を提示したいとき、あなたの代わりに、このようなhttp://user-agent-string.info/として別のサービスを利用したいと思います。彼らはまた、Java API exampleを提供しています。
コードのにおいはどういう意味ですか?これは、ユーザーエージェントとしてiphone/Androidを検出し、これらのモバイルプラットフォーム向けのスタイルシートを注入するための良い方法のように思えました。あなたは何か違うものをお勧めしますか? – jrutter
ありがとうございます。私は最初にスタイルシートのアプローチを試みます。 – jrutter
答えを更新しました。この例の 'smartphone.css'はiPhone/Androidに必要なものでなければなりません。 – BalusC