我收到此错误
/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()}"/>
请注意,我可以在本地Tomcat上运行相同的项目而不会出现任何错误。
服务器上的Tomcat版本是“Tomcat 6.0”
答案 0 :(得分:12)
代码的问题是本地运行的代码在Tomcat 7上运行,服务器上运行的代码在Tomcat 6上运行。
只要调用带参数的方法(那些()
)是EL 2.2(及更高版本)的特性,它伴随着Servlet 3.0兼容容器(因此Tomcat 7),您的代码就可以在本地运行。< / p>
只要在Servlet 2.5容器(即Tomcat 6)上运行此代码,就会出现上述错误。
两个servlet容器都支持“类似属性”访问(没有()
)。
答案 1 :(得分:5)
试试这个:
<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}"/>
原因是,EL删除了“get”并使getter方法的第一个字母为小写。通常会有一个与修改后的getter名称匹配的字段,但这不是必需的。
(实际上,反过来说 - 当你使用usermap.messageData时,EL会自动将其转换为usermap.getMessageData()。如果该方法不存在,你将获得异常。)