Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsp 为什么可以';我在scriptlet表达式中使用if-else语句,而三元运算符工作正常_Jsp_Scriptlet - Fatal编程技术网

Jsp 为什么可以';我在scriptlet表达式中使用if-else语句,而三元运算符工作正常

Jsp 为什么可以';我在scriptlet表达式中使用if-else语句,而三元运算符工作正常,jsp,scriptlet,Jsp,Scriptlet,我们知道脚本变量state是真的 为什么这个scriptlet表达式是错误的?翻译后,如何将代码转换成_jspService方法 <%= if(state) { "yes"; } else { "no"; } %> if/else版本在语法上与三元运算符不同。它不会“返回”任何东西 为了做这样的工作,你需要这样做 <% if (state) { out.print("yes"); } else { out.print("

我们知道脚本变量state是真的

为什么这个scriptlet表达式是错误的?翻译后,如何将代码转换成_jspService方法

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

if/else
版本在语法上与三元运算符不同。它不会“返回”任何东西

为了做这样的工作,你需要这样做

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

如果语句需要做些什么。它们不能只使用字符串作为唯一的语句。三值运算符选择并返回所选值

具有
语法的Scriptlet块必须是一个生成输出值的表达式。基本上,他们必须评估一些东西。即使
if
语句在语法上有效,它仍然不会返回值。

Roel de Nijs说:

JSP表达式放在out.print()中

所以转换成out.println(state? “是”:“否”);,编译起来没有任何问题。但是有 if语句生成的代码将无法编译。这也是为什么 jsp表达式中不允许使用分号


我知道这是对的,但问题是。为什么表达式是错误的,因为我们可以在它们内部使用if/else?第一个表达式不会转换为
\u jspService
方法中的任何内容,因为它不是有效的语法。它不能编译。
public void _jspService(...){
   out.println("yes");
}
<%
    if (state) {
        out.print("yes");
    } else {
        out.print("no");
    }
%>