我们知道脚本变量 state 是真的。
为什么这个scriptlet表达式错误?如何在翻译后将代码转换为_jspService方法?
<%=
if(state) {
"yes";
} else {
"no";
}
%>
这是正确的
<%= state ? "yes" : "no" %>
因为返回一个值,它将作为
显示在_jspService中public void _jspService(...){
out.println("yes");
}
答案 0 :(得分:2)
if / else
版本在语法上与三元运算符不同。它不会“返回”任何东西。
为了做出类似的工作,你需要这样做
<%
if (state) {
out.print("yes");
} else {
out.print("no");
}
%>
如果陈述需要做。他们不能只有一个字符串作为他们唯一的陈述。三元运算符选择并返回所选值。
具有<%= %>
语法的Scriptlet块必须是生成要输出的值的单个表达式。基本上他们必须评估一些东西。即使if
语句在语法上有效,它仍然不会返回值。
答案 1 :(得分:0)
Roel de Nijs说:
JSP表达式&lt;%= ...%&gt;放在out.print()
中所以&lt;%=州? “是”:“否”%&gt;转换成out.println(状态? “是”:“不”);,编译没有任何问题。但随着 if语句生成的代码将无法编译。这也是原因 不允许在jsp表达式中使用分号。