Gov*_*iya 7 jsp tomcat jstl el
我收到了这个错误
/WEB-INF/jsp/account/index.jsp(6,0)当未指定默认命名空间时,函数getMessageData必须与前缀一起使用
<c:set var="messageData" scope="session" value="${usermap.getMessageData()}"/>
<c:set var="scheduleData" scope="session" value="${usermap.getScheduleData()}"/>
<c:set var="meetingData" scope="session" value="${usermap.getMeetingData()}"/>
Run Code Online (Sandbox Code Playgroud)
请注意,我可以在本地Tomcat上运行相同的项目而不会出现任何错误.
服务器上的Tomcat版本是"Tomcat 6.0"
sku*_*sel 12
您的代码的问题是本地运行的代码在Tomcat 7上运行,服务器上运行的代码在Tomcat 6上运行.
一旦调用带有参数(那些())的方法是EL 2.2(及更高版本)的特性,它伴随着Servlet 3.0兼容容器(因此Tomcat 7),您的代码在本地运行良好.
只要在Servlet 2.5容器(即Tomcat 6)上运行此代码,就会出现上述错误.
但是,()两个servlet容器都支持"类属性"访问(不带).
试试这个:
<c:set var="messageData" scope="session" value="${usermap.messageData}"/>
<c:set var="scheduleData" scope="session" value="${usermap.scheduleData}"/>
<c:set var="meetingData" scope="session" value="${usermap.meetingData}"/>
Run Code Online (Sandbox Code Playgroud)
原因是,EL删除了"get"并使getter方法的第一个字母为小写.通常有一个与修改后的getter名称匹配的字段,但这不是必需的.
(实际上,反过来说 - 当你执行usermap.messageData时,EL会自动将其转换为usermap.getMessageData().如果该方法不存在,你将获得异常.)
| 归档时间: |
|
| 查看次数: |
20706 次 |
| 最近记录: |