【发布时间】:2011-07-27 05:27:37
【问题描述】:
我正在开发一个相当简单的 Web 应用程序,它使用 JSP 和 Java servlet,在 tomcat 上运行。我已经能够在 servlet 的会话中设置属性,以便将信息传递给 JSP,然后将这些信息呈现给用户。我已经使用不同类的几个不同对象完成了此操作,并且效果很好。突然,当我设置一种特定类型的对象(包含配置信息)时,该属性根本没有出现在 JSP 中。我设置的其他属性仍然存在,但配置对象完全丢失。我打印了属性名称列表,但我使用的名称甚至不存在(尽管我设置的其他属性的其他名称存在)。
是什么原因造成的?我的配置类没有什么不同或奇怪的。我真的很感激关于什么样的事情可能导致这种行为的任何想法。我用谷歌搜索和搜索,但找不到任何东西。
ETA:如果重要的话,属性的名称是“配置”。我找不到任何关于保留字或任何内容的内容...我在 servlet 中将此属性设置为与“用户”等其他一些功能相同的功能。然后我重定向到一个试图获取用户和配置的 JSP。所以一切都在同时进行。用户很好,而配置甚至没有出现在属性名称列表中。
ETA2:以下是日志中不断发生的异常:
java.lang.Exception
at pms.SessionListener.printStackTrace(Unknown Source)
at pms.SessionListener.attributeAdded(Unknown Source)
at org.apache.catalina.session.StandardSession.setAttribute(StandardSession.java:1498)
at org.apache.catalina.session.StandardSession.setAttribute(StandardSession.java:1390)
at org.apache.catalina.session.StandardSessionFacade.setAttribute(StandardSessionFacade.java:154)
at PMS.getTaskInfo(Unknown Source)
at PMS.doGet(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:306)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:558)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:379)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:282)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:357)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1687)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
【问题讨论】:
-
我昨天回答了一个类似的问题。您可能会发现它很有用。 stackoverflow.com/questions/5495361/…
-
谢谢,但这根本不是问题。会话绝对存在,我可以同时从 JSP 中的会话中检索在 servlet 中设置的其他属性。这只是一个不会显示的特定属性。我发现会话中的很多东西都不存在,但不知道为什么一个属性在其他属性起作用时不起作用。
-
我明白了。好吧,然后我发布了一个答案:)
-
请实现 BalusC 或我自己推荐的监听器,并让使用者知道结果。