2010-9-10 11:50:42 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet authentication threw exception
org.apache.jasper.JasperException: /WEB-INF/pages/hr/tabfieldconfig/newField.jsp(91,74) "${param.ftablename==null?examField.ftabblename:param.ftablename}" contains invalid expression(s): javax.el.ELException: Error Parsing: ${param.ftablename==null?examField.ftabblename:param.ftablename}
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:198)
at org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:1149)
at org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:819)
at org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1507)
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2336)
at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2386)
at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2392)
at org.apache.jasper.compiler.Node$Root.accept(Node.java:489)
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2336)
at org.apache.jasper.compiler.Validator.validate(Validator.java:1737)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:178)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:306)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:273)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:654)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:445)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:379)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:292)
at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:236)
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:257)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1183)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:902)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
我在JSP页面中使用了EL表达式${param.ftablename==nullexamField.ftabblename:param.ftablename},自己测试没有错误,放到同事机器上就报错(上面的错误),说我的写的不对,没见过EL表达式里使用三目运算符的,非得让我换成其他的判断形式,换就换,反正程序咋写都一样,有时间了自己查原因。
问题不好查,一样的代码只是放到不同的机器上了,后来发现我用的Tomcat5.5版本,同事的是Tomcat6.0版本,开始以为是Tomcat6.0的一个bug或是不再支持那样的写法,后来通过规范代码,在运算符与表达式之间加空格,改为<c:out value="${param.ftableid==null ? examField.ftableid : param.ftableid}"></c:out>,就不报错了,正常运行。
看来不是Tomcat6.0的bug,还是自己代码写的不规范,标准的三位运算表达式Expression1 ? Expression2 :Expression3,每个表达式和运算符之间,都有一个空格,否则Tomcat6.0是无法识别的。有点像Python的行为强制程序员写规范代码。
分享到:
相关推荐
在编程世界中,三目运算符和正则表达式是两个非常重要的概念,它们各自扮演着独特的角色,同时也常被结合起来使用,以提高代码的简洁性和效率。让我们深入探讨这两个主题。 首先,三目运算符,也称为条件运算符,是...
总之,短路法结合逗号表达式提供了一种替代传统if-else和三目运算符的可能性,特别是在需要编写更简洁代码的场景下。但其实际应用有限,需要在保持代码可读性和易维护性的同时谨慎使用。通过学习和掌握这种技巧,...
三目运算符的实例 。
在Java编程语言中,三目运算符(也称为条件运算符)是一种简洁且高效的方式来根据条件选择两个可能的值中的一个。它由三个操作数组成,因此得名“三目”运算符。 #### 二、语法结构 三目运算符的语法结构为: ``` ...
三目运算符习题及参考答案
在C语言中,三目运算符(也称为条件运算符)是一种简洁的语法结构,用于根据条件执行不同的表达式。这个运算符具有三个操作数,因此得名“三目”。在C语言中,它的语法形式如下: `条件 ? 表达式1 : 表达式2` 如果...
在实际项目中,合理地使用三目运算符可以使代码更加紧凑,同时保持清晰的逻辑结构。而对条件判断和输出的理解则是编程的基础,无论你是初学者还是经验丰富的开发者,都应该不断熟练掌握并应用这些概念。
c++三目运算符?: 语句的使用,介绍了对分数分级方式使用时的简便之处,可以节约代码书写量
虽然三目运算符提供了一种简洁的方式来实现条件分支逻辑,但在实际开发中应谨慎使用。原因在于,过度使用三目运算符可能会降低代码的可读性和可维护性,尤其是在逻辑较为复杂的场景下。因此,建议只在逻辑简单明了的...
使用条件表达式(即Python中的三目运算符)可以将上述代码简化为一行: ```python max_value = a if a > b else b ``` 这里,`a > b`是条件,`a`是在条件为真时的值,`b`是在条件为假时的值。 #### 四、条件...
在iOS开发中,三目运算符(三元运算符)是一种高效、简洁的代码编写方式,尤其在处理条件判断和赋值时。它的符号是 `? :`,用于替代传统的 `if-else` 语句。这篇教程将深入探讨这个运算符在iOS中的应用和一些特殊的...
判断语句 三目运算符代码
三目运算符,也称为条件运算符,是编程语言中的一种高效表达方式,它允许根据条件的真假来决定执行不同的代码路径。这个运算符在C、C++、Java等语言中广泛存在,而在Python中则有其独特的实现方式。下面我们将深入...
在Golang中,你可能会发现一个与其他编程语言不同的特点,那就是它不支持三元运算符。三元运算符通常在其他语言如Python、JavaScript、C++等中被广泛使用,其语法形式为`条件表达式 ? 真值表达式 : 假值表达式`。...
首先,三目运算符是一种简洁的条件表达式,它提供了一种在一行代码中进行条件判断并返回不同结果的方法。其基本语法形式如下: ```java condition ? expression1 : expression2; ``` 这里,`condition` 是一个布尔...
在 Java 中,我们可以使用三目运算符来比较三个数字的大小。例如,我们可以使用以下代码来比较三个数字的大小: ```java int a = 5, b = 8, c = 9; a = a > b ? a : b; // 将较大值赋值给 a a = a > c ? a : c; // ...
三目运算符.cpp
三目运算符.py
在`main.java`文件中,你可能会看到以下类型的代码片段,用于演示和练习三目运算符的使用: ```java int a = 10; int b = 20; int max = a > b ? a : b; // 如果a大于b,则max等于a,否则等于b ``` 这段代码定义了...
当使用三目运算符时,我们实际上是在编写一个JavaScript表达式,根据表达式结果的真假来决定应用哪个类。三目运算符是一种简洁的条件表达式写法,其格式为`条件 ? 值1 : 值2`。当条件为真时,整个表达式的值为值1;...