Jsp 未指定默认命名空间时,函数getMessageData必须与前缀一起使用

Jsp 未指定默认命名空间时,函数getMessageData必须与前缀一起使用,jsp,tomcat,jstl,el,Jsp,Tomcat,Jstl,El,我得到了这个错误 /WEB-INF/jsp/account/index.jsp(6,0)函数getMessageData必须 在未指定默认命名空间时与前缀一起使用 请注意,我可以在本地Tomcat上运行相同的项目,而不会出现任何错误 服务器上的Tomcat版本是“Tomcat 6.0”请尝试以下操作: <c:set var="messageData" scope="session" value="${usermap.messageData}"/> <c:set var="s

我得到了这个错误

/WEB-INF/jsp/account/index.jsp(6,0)函数getMessageData必须 在未指定默认命名空间时与前缀一起使用


请注意,我可以在本地Tomcat上运行相同的项目,而不会出现任何错误

服务器上的Tomcat版本是“Tomcat 6.0”

请尝试以下操作:

<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()。如果该方法不存在,您将得到一个异常。)

代码的问题是,本地运行的代码在Tomcat 7上运行,而服务器上运行的代码在Tomcat 6上运行

只要调用带有参数的方法(那些
()
)是EL2.2(及更高版本)的特性,并且伴随着Servlet3.0兼容容器(因此Tomcat7),您的代码就可以在本地正常运行

一旦该代码在Servlet2.5容器(因此是Tomcat6)上运行,就会出现上述错误


尽管如此,两个servlet容器都支持“类似属性”的访问(不带
()
)。

但我的代码在本地PC的tomcat上工作。@GovindKamalaPrakashMalviya如果它在本地PC上工作,那么你就有了其他不同的东西,因为您所展示的将不起作用-JSTL不支持以您尝试的方式直接调用方法。尝试此操作,看看问题是否消失。设置错误:找不到带有[0]参数的方法[messageData]usermap的java类型是什么?虽然您的答案可能提供了一种实现所需效果的方法,但它没有回答为什么的问题。目前提供的信息不允许对其进行判断。最可能的原因是webapp部署到的tomcat没有将EL 2.2+thius作为tomcat 6,而本地主机是tomcat 7。我想我的EL有点过时了,我不知道他们添加了参数support@StormeHawke没问题。我们每天都会在这里发现一些新的东西!
<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}"/>