1

スクリプト変数の状態が trueであることはわかっています。

このスクリプトレット式が間違っているのはなぜですか? 翻訳後の _jspService メソッドへのコードはどうなりますか?

<%=
if(state) {
  "yes";
} else {
  "no";
}
%>

そしてこれは正しい

<%= state ? "yes" : "no" %>

値を返し、_jspService に次のように表示されるためです。

public void _jspService(...){
   out.println("yes");
}
4

2 に答える 2

2

バージョンは、if / else三項演算子とは構文的に異なります。何も「返さない」。

そのような仕事をするためには、これを行う必要があります

<%
    if (state) {
        out.print("yes");
    } else {
        out.print("no");
    }
%>

if ステートメントは何かをする必要があります。唯一のステートメントとして文字列を持つことはできません。三項演算子は、選択した値を選択して返します。

構文を持つスクリプトレット ブロックは、<%= %>出力する値を生成する単一の式である必要があります。基本的に、それらは何かに評価する必要があります。ステートメントが構文的に有効であってもif、値は返されません。

于 2013-10-09T18:36:50.730 に答える