导航菜单
路很长,又很短
博主信息
昵   称:Cocodroid ->关于我
Q     Q:2531075716
博文数:293
阅读量:575204
访问量:54038
至今:
×
云标签 标签球>>
云标签 - Su的技术博客
博文->>首页 博主的更多博文>>
The function size must be used with a prefix when a default namespace is not
Tags : j2ee,jstl,EL发表时间: 2014-11-01 00:43:27
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。
比如: 转自:Su的技术博客  原文地址:

SEVERE: Servlet.service() for servlet jsp threw exception

     org.apache.jasper.JasperException: /WEB-INF/jsp/index

     /bloglist.jsp(33,51) The function size must be used with a prefix when a

     default namespace is not specified

     at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)

     at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)


The function size must be used with a prefix when a default namespace is not

意思是:size方法应该需要一个有前缀的默认命名空间。EL表达式无法直接获取size方法。

我也是很奇怪!在开发中使用Jetty作为Web服务器的时候,使用EL表达式调用Set的size方法直接:

${dis.size()}    访问页面就没问题。

当我移植到Tomcat访问页面的时候竟然出现了上面的异常。

我觉得有可能是两种服务器对JSP的EL表达式解析不同造成的吧,或者默认缺少上面jar包吧。

解决:

使用JSTL的函数标签,也就是调用length方法:

即:    ${fn:length(dis.szie)}     就可以正确调用Set的size方法。

注意:记得要加上JSTL标签库:<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>

一般我,我们使用EL表达式都是在对象上加上属性进行访问,如:${user.name},而不是调用get方法获取属性值,这个应该是底层帮我们做好了,所以方便我们使用。


打赏
打赏
关注公众号
公众号
类别:Java| 阅读(2910)| 赞 (0)
评论
暂无评论!
发表评论
昵  称:

验证码:

内  容:

    同时赞一个 赞