2012-04-29 6 views
0

私はこの回答を探していたのですが、しばらくの間ウェブを徘徊してきました。 JSPのJavaスクリプトレットにテキストフィールドを持たせる方法はありませんか?私はC#であなたがJava EEにはスクリプトレットにテキストフィールドがありませんか?

@Html.TextField(); 

を持つことができますし、C#のコードとして使用するためにそれがテキストフィールドを作成することを知っています。

なぜ私はこれを望んでいるのですか?セッションを取得し、ユーザー属性にユーザー名が格納されているかどうかを確認していますか?もしそうなら、私はユーザー名のテキストボックスを表示したくありません。私が言うことは、Javaスクリプトレットではできないことですが。

<%if(session.getAttribute("user") == null) %> 
Username: <input type="text" name="name"><br/> 

紛失しているものがありますか?

+2

もちろん可能です。あなたは* [スクリプトレットを使う]べきではありませんが、できます。通常、この種の機能はカスタムタグでラップされるか、単にJSTLを使って 'if'を実装するだけです。 –

+0

私は今までJSTLについて聞いていません。私はそのカスタムタグを調べます。ありがとうございます – Rizowski

答えて

0

これは動作しますが、それはJavaServer Pages Standard Tag LibraryExpression language
の代わりに、スクリプトレットを使用することをお勧めします。 JSPページのメンテナンスが複雑になる傾向があります。

JSPページでスコープ付き変数を設定できます。このように:

<c:set var="myVariable" scope="page" value="expression"/> 

あなたの状況は容易ELとJSTLの助けを借りて解決することができます:あなたは、より複雑なロジックを持っている場合は

<c:if test="${sessionScope.user eq null}"> 
    <c:out value="Username: ${myVariable}" /> 
</c:if> 

は、それはcustom tagsを作成する意味があります。

+0

このメソッドを使用すると、ジャスパー例外が発生します。 **タグファイルのTLDまたは属性ディレクティブによると、属性テストでは式が受け入れられません** – Rizowski

+1

旧式のjarファイルを使用しています。使用しているJSTL taglibのバージョンを確認してください。少なくとも1.1にする必要があります(URIに注意してください)。<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> '代わりに'http:// java.sun.com/jstl/core'の中にあります。 – kapand

+0

これが動作しない場合は、基本的にjspにELを評価するよう指示するこの指示文 '<%@ page isELIgnored =" false "%" 'を試してください。 – kapand

関連する問題