现在手头上有一个基于Struts的项目,我们对标签库进行了封装,基本继承了struts的标签。
测试环境使用的是Tomcat 5.5,但发布到生产环境(WebLogic 9.2)时,个别页面发生了错误。
检查了下错误,发现错误源自标签的嵌套,例如:
<odin:textEdit property="aae044" readonly="true" width="<%=(dispWidth==null?"239":dispWidth) %>"/>
odin.textEdit是我们自定义的标签,width是其中一个属性,标签的实现是继承自struts的文本标签。
在WebLogic上编译页面时,出现以下错误:
BasicCorpInfoSimple.tag:54:82: This attribute is not recognized.
<odin:textEdit property="aae044" readonly="true" width="<%=(dispWidth==null?"239":dispWidth) %>"/>
^--------^
at weblogic.servlet.jsp.JavelinxJSPStub.compilePage(JavelinxJSPStub.java:294)
at weblogic.servlet.jsp.JspStub.prepareServlet(JspStub.java:200)
at weblogic.servlet.jsp.JspStub.prepareServlet(JspStub.java:164)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:235)
at weblogic.servlet.internal.ServletStubImpl.onAddToMapException(ServletStubImpl.java:391)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:309)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
..........
在此有两个疑问:
1.是不是因为Servlet版本的区别造成这个问题?
2.是不是可以通过配置来解决?
把<odin:textEdit property="aae044" readonly="true" width=" <%=(dispWidth==null?"239":dispWidth) %>"/>
改为<odin:textEdit property="aae044" readonly="true" width='<%=(dispWidth==null?"239":dispWidth) %>'/>
即把外一层双引号换成单引号即可。
应该是版本问题