问题描述:
框架spring mvc ,前台页面中使用了tiles标签,使用用户直接登录本系统没有问题,但是使用单点登录进入相应的页面,则会报错:nullpointer,错误信息如下:如果把页面的<t:insertAttribute name="left" />标签去掉,则不会报这个错,
严重: Servlet.service() for servlet mvc threw exception
java.lang.NullPointerException
at org.apache.jsp.WEB_002dINF.views.index.road.road_005fleft_jsp._jspService(road_005fleft_jsp.java:67)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:551)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:488)
at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968)
at org.apache.jasper.runtime.PageContextImpl.doInclude(PageContextImpl.java:656)
at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:650)
at org.apache.tiles.jsp.context.JspTilesRequestContext.include(JspTilesRequestContext.java:103)
at org.apache.tiles.jsp.context.JspTilesRequestContext.dispatch(JspTilesRequestContext.java:96)
at org.apache.tiles.renderer.impl.TemplateAttributeRenderer.write(TemplateAttributeRenderer.java:44)
at org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:106)
at org.apache.tiles.renderer.impl.ChainedDelegateAttributeRenderer.write(ChainedDelegateAttributeRenderer.java:76)
at org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:106)
at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:670)
at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:336)
at org.apache.tiles.template.InsertAttributeModel.renderAttribute(InsertAttributeModel.java:210)
at org.apache.tiles.template.InsertAttributeModel.end(InsertAttributeModel.java:126)
at org.apache.tiles.jsp.taglib.InsertAttributeTag.doTag(InsertAttributeTag.java:311)
at org.apache.jsp.WEB_002dINF.views.template.home_jsp._jspx_meth_t_005finsertAttribute_005f0(home_jsp.java:298)
at org.apache.jsp.WEB_002dINF.views.template.home_jsp._jspService(home_jsp.java:251)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at org.apache.tiles.servlet.context.ServletTilesRequestContext.forward(ServletTilesRequestContext.java:241)
at org.apache.tiles.servlet.context.ServletTilesRequestContext.dispatch(ServletTilesRequestContext.java:222)
at org.apache.tiles.renderer.impl.TemplateAttributeRenderer.write(TemplateAttributeRenderer.java:44)
at org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:106)
at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:670)
at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:690)
at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:644)
at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:627)
at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:321)
at org.springframework.web.servlet.view.tiles2.TilesView.renderMergedOutputModel(TilesView.java:124)
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:574)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.ShallowEtagHeaderFilter.doFilterInternal(ShallowEtagHeaderFilter.java:58)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:48
请帮忙分析原因;
我的解决过程:
1:因为本地直接登录没事,单点跳转有事,怀疑是和跳转有关系 ,所以让单点登录成功后,跳转到一个静态页面,然后在静态页面点链接到相应的页面,这种解决办法 失败;
2:在解决问题的过程中,发现一个问题,就是先在我们系统登录,成功之后,再次用单点登录登录到相应的页面,问题没有复现;(把cookies 历史记录删除,直接单点登录问题复现)
3:网上有人说jar包冲突,但是把lib 下面的个人认为冲突的jar 删掉,问题复现(有可能是我发现的冲突jar包不对,望指点);
4:tiles使用的是2.0版本,
<bean id="tilesViewResolver"
class="org.springframework.web.servlet.view.tiles2.TilesViewResolver" />
<bean class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/views/**/views.xml</value>
</list>
</property>
</bean>
spring 使用的是3.0版本(spring 相应的jar 包中,是2.0的tiles类)
该问题已经困扰1天,一直没有找到解决办法 ,望知情人士解答。
相关推荐
### Struts 中 Tiles 标签详解 #### 一、引言 在Web开发领域,尤其在使用Struts框架时,为了提高代码复用性及页面布局的灵活性,开发者经常使用到一个非常有用的工具——Tiles框架。Tiles框架允许我们通过组合可...
Struts1中的Tiles标签库是一种强大的布局管理工具,旨在提高Web应用的可重用性、可扩展性和可维护性。Tiles框架是Apache Software Foundation发起的一个开源项目,它为开发者提供了创建复合式网页的能力,允许在运行...
Struts Tiles标签是Java Web开发中Struts框架的一部分,它主要负责处理页面布局和组合复杂的网页。Tiles框架提供了一种强大的模板机制,使得开发者能够创建可重用的、灵活的页面结构,从而提高代码的可维护性和可...
本文将深入探讨Struts2标签和Tiles库的使用,以及它们在实际开发中的应用。 1. **Struts2标签** Struts2提供了丰富的标签库,这些标签使得开发者能够在JSP页面中方便地实现业务逻辑和控制流程。例如: - `s:...
通过使用这些tiles标签,开发者可以在页面中定义tiles的位置,或者直接引用已经定义好的tiles,从而实现灵活的页面布局和内容重用。 在实际应用中,Apache Tiles框架通常与Spring MVC、Struts等其他Web框架集成,以...
5. **在JSP中使用Tiles**:在视图层,JSP页面可以包含Tiles,使用`<tiles:insert>`标签插入定义的Tiles。 Struts-Tiles的特性包括: - **复用性**:由于页面被分解为独立的部分,可以方便地在多个页面中重用。 - **...
**Tiles**框架是为了解决Web应用中的页面布局问题而设计的一种轻量级解决方案。它主要应用于MVC(Model-View-Controller)架构中的视图层,尤其适用于使用Struts框架构建的应用程序中。 #### 二、Tiles框架的主要...
- **Tiles标签库**:提供了用于操作Tiles组件的JSP标签,如`<tiles:insert>`等。 - **Tiles组件的配置文件**:通常使用XML格式来定义Tiles组件及其属性,例如`tiles-def.xml`文件。 - **TilesPlugIn插件**:负责处理...
2. `tiles-jsp-2.1.2.jar`:这个JSP标签库文件使开发者能够在JSP页面中方便地使用Tiles。通过这些标签,你可以轻松地插入、组合和管理不同的页面部分。 3. `tiles-servlet-2.1.2.jar`:这个组件是与Servlet容器交互...
Tiles框架通过引入模板机制,解决了这个问题,它允许开发者定义可重用的组件,并在运行时动态插入到页面模板中。 Tiles的核心特性包括: 1. **创建可重用的模板**:Tiles允许开发者定义模板文件,这些模板可以包含...
本主题聚焦于一个特定的jQuery插件——"win8 tiles风格标签jQuery插件",该插件旨在为网页创建Windows 8风格的磁贴效果。 Windows 8引入了一种全新的用户界面,其特征是大块、多彩的磁贴,这种设计被称为“Modern ...
4. **扩展性和自定义**: Tiles 2.0 支持自定义标签库(Tag Library)和适配器(Adapter),使得开发者可以扩展框架功能,满足特定需求。例如,可以创建自己的Tiles定义解析器或渲染器。 5. **集成其他框架**: 由于...
在JSP页面中,我们使用Tiles的标签库(如`<tiles:insertDefinition>`、`<tiles:putAttribute>`等)来插入和设置页面元素。这样,我们可以把关注点集中在内容上,而不用关心布局细节。 **总结** "tiles+servlet简单...
通过`<tiles:insertAttribute>`标签,我们可以将页面的不同部分(如顶部面板、左侧菜单和主体内容)插入到一个主布局中。这种方式极大地提升了页面的可维护性和可扩展性。 #### 3.2 tiles.xml配置 `tiles.xml`文件...
确保添加正确的版本,因为不同版本之间可能存在兼容性问题。例如: ```xml <!-- Spring MVC --> <groupId>org.springframework <artifactId>spring-webmvc <version>5.x.y.RELEASE <!-- Tiles --> ...
确保版本兼容,因为不兼容的版本可能会导致运行时问题。 2. **配置Tiles插件**:在Struts2的配置文件(通常为struts.xml)中,启用Tiles插件。这一步将告诉Struts2使用Tiles作为视图解析器。 ```xml ,"/> ...
以上就是关于Struts Tiles框架的基础知识,通过深入理解和实践,开发者可以更有效地管理和组织Web应用程序的页面布局,提升开发效率。通过阅读"struts-tiles笔记.txt"和在"workspace"中进行实践,可以进一步掌握这个...
【标签】"spring+tiles"表示这个压缩包是针对Spring 3.0及以上版本的,意味着它应该兼容Spring框架的现代版本。Spring 3.0引入了许多新特性,包括对JSR-303 Bean Validation的支持,改进的类型安全的依赖注入,以及...
这里通过`tiles:insertAttribute`标签插入不同的页面部分,实现了模板化设计。 #### 七、总结 通过以上步骤,我们已经成功地将Struts2与Tiles进行了整合。这种整合不仅可以帮助开发者更好地组织页面布局,还可以...
开发过程中,可以通过`<jsp:include>`或`<tiles:insert>`标签来插入和组合瓦片。 总结来说,Tiles 2.0.6官方jar包是一个强大的页面布局工具,它通过将网页拆分成可重用的部分,简化了Web开发过程,提高了代码的可...