jsp
1<!--一部抜粋です--> 2 <div class="basicbox sex"> 3 男性:<input type="radio" name="sex" value="男性" <c:if test="${sex == "男性"}">> 4 女性:<input type="radio" name="sex" value="女性" <%= if(${sex} == "女性"){System.out.println("chaecked")}%>> 5 <div class="erroemsg"> 6 <c:if test="${not empty sexError}"> 7 <p>${sexError}</p> 8 </c:if> 9 </div> 10 </div> 11
このインプットの中に書かれているif文は両方ともエラーになります。このようなinputやoptionタグの中で条件分岐するにはどのように書けば良いのですか。
★現状
抜粋のsexについてはサーブレットで以下のようにセッションに格納しています。
Java
1session.setAttribute("sex", sex);
★EL式、JSP式の私の認識
スクリプトレット(HTMLが始まる前)にJavaのコードを記述する場合は <% Javaのコード %>
HTML内にJavaのコードを埋め込む場合は <%= 変数や演算式 %>
EL式を使用すると、インポートやセッションを記述することなくセッションの値を使用できる。つまり${}が使用できる
EL式で条件分岐等を行う為にJSTLを使用する。
が私の認識です。
★質問
以上を踏まえていくつか質問があります。
❶スクリプトレット内でEL式でセッションの値をなぜ変数に格納できないのでしょうか。
JSP
1//スクリプトレット内の式 2<% 3 4String sex = ${sex}; 5 6%>
のようにするとラダーマークにトークンエラーがつきます
❷
以下のinputの文のでセッション変数sexが’男性’であればcheckedをつけるにどう書けば良いでしょうか。
JSP
1<input type="radio" name="sex" value="男性">
ヒントだけでもお願いします。
【関連質問】
<select name="year"> <c:forEach begin="1900" end="2010" var="i" step="1"> <option value="${i}" ${year == ${i} ? "selected" : ""}> <c:out value="${i}" /> </option> </c:forEach> </select>
というJSP文があります。セッションに以下のように保存しています。
session.setAttribute("year",year);//yearにはString型で西暦が入っている。
私のコードはエラーになってますが、2つ追記で質問があります。
❶
<c:out value="${i}" />の${i}はセッションと同じ扱いなのでしょうか。
❷
${year == ${i} ? "selected" : ""}だとなぜエラーになりますか。
手元の参考書には、${year == 値 ? "true" : "false"}の三項演算子の解説がなく、JSPでの使い方がわかりません。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/08 15:44
2019/03/09 00:53
2019/03/09 10:13
2019/03/09 10:15