背景:由于公司国际化项目需要,而系统在最初开发时,完全没考虑过将来要做国际化。采用的是硬编码的模式,单需要修改的jsp页面就达170多个,可谓任重道远啊。后来经过编写批量提取工具提取,大约有4000多处直接写中文的地方需要修改。懒人自有妙懒人计。编个工具批量提取替换呗。
难题:struts 的 select 标签的 headerValue 属性值不支持使用jsp表达式
org.apache.jasper.JasperException: /service/service_manager.jsp(42,7) According to TLD or attribute directive in tag file, attribute headerValue does not accept any expressions
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:148)
at org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:1172)
at org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:819)
at org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1507)
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2338)
at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2388)
at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2394)
at org.apache.jasper.compiler.Node$Root.accept(Node.java:489)
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2338)
at org.apache.jasper.compiler.Validator.validate(Validator.java:1737)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:178)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:306)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:273)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:316)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:336)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
解决方案:暴力修改jboss的jsp编译检验过程,使struts<s:select headerValue>支持jsp表达式<%=%>
实战过程:
到http://nchc.dl.sourceforge.net/project/jboss/JBoss/JBoss-4.2.3.GA/jboss-4.2.3.GA-src.tar.gz下载源码
主要的源文件是Japser的/Japser/src/org/apache/jasper/compiler/Validator.java
} else {
// Attribute does not accept any expressions.
// Make sure its value does not contain any.
if (expression) {
err.jspError(n, "jsp.error.attribute.custom.non_rt_with_expr",
tldAttrs[j].getName());
}
jspAttrs[i] = new Node.JspAttribute(tldAttrs[j],
attrs.getQName(i), attrs.getURI(i), attrs
.getLocalName(i),
attrs.getValue(i), false, null, false);
}
修改为:
} else {
// Attribute does not accept any expressions.
// Make sure its value does not contain any.
if (expression) {
String value = attrs.getValue(i);
if("headerValue".equals(attrs.getQName(i))&&value.startsWith("<%=")&&value.endsWith("%>")){
jspAttrs[i] = getJspAttribute(tldAttrs[j],
attrs.getQName(i), attrs.getURI(i),
attrs.getLocalName(i), attrs
.getValue(i), String.class, n,
false);
found = true;
break;
}
err.jspError(n, "jsp.error.attribute.custom.non_rt_with_expr",
tldAttrs[j].getName());
}
jspAttrs[i] = new Node.JspAttribute(tldAttrs[j],
attrs.getQName(i), attrs.getURI(i), attrs
.getLocalName(i),
attrs.getValue(i), false, null, false);
}
把Japser项目,编译后替换\server\default\deploy\jboss-web.deployer目录下jbossweb.jar文件即可
分享到:
相关推荐
struts2 <s:if>标签使用struts2 <s:if>标签使用struts2 <s:if>标签使用struts2 <s:if>标签使用struts2 <s:if>标签使用struts2 <s:if>标签使用
struts<optionsCollection>应用文档+实例,我相信会给大家到来帮助
实例56 用HTML表单设置JavaBean的属性值<br> 实例57 计数器JavaBean<br> 实例58 查询数据库JavaBean<br> 实例59 购物车JavaBean及其应用<br> 实例60 数据库记录分页操作JavaBean<br>Servlet技术<br> 实例61 JSP与...
可以直接运行 , 可以editplues 也可以看内容
</tr><br> </c:forEach><br> </table><br> <p><br> <li>循环控制标签:c:foreach</li><br><br> <table border="1"><br> <tr><br> <td>姓名</td><br> <td>年龄</td><br> <td>所属组</td><br> </tr><br> <c:forEach var...
MLDN框架笔记大全<br>JSP+JDBC_假分页 <br>02 JSP+JDBC_真分页(基于MySQL数据库分页) <br>03 JSP+DAO和MVC+DAO(基于MySQL数据库分页) <br>04 Struts入门 <br>05 使用Struts + DAO完成用户登陆 <br>06 Struts标签-...
struts-1.3.8 包(<br><br>antlr-2.7.2.jar<br>bsf-2.3.0.jar<br>commons-beanutils-1.7.0.jar<br>commons-chain-1.1.jar<br>commons-digester-1.8.jar<br>commons-fileupload-1.1.1.jar<br>commons-io-1.1.jar<br>...
里面包括<html><bean><logic><tiles><nested><br>五组标签库的详细讲解,每个标签库都对应着<br>相应的例子(标签多的标签库有两个例子)。<br>另外还有国际化(文字国际化/图片国际化)、<br>表单验证,以及验证...
1 应用Struts的网站建设 <br><br> <br> <br>Java基础<br> 1 20个Java基础Tips <br> 2 abstract,static,final修饰符 <br> 3 ChinaUnix.net Java精华贴 <br> 4 ANT学习笔记 <br> 5 极度性能调整 <br><br> <br>FAQs<br>...
<br>3-3 Struts的工作流程<br>第三章 网上书店详细设计<br>3-1 需求分析<br>3-2 总体设计<br>3-3 功能设计<br>3-4 数据库设计与实现<br>3-4-1 数据库的需求分析<br>3-4-2 创建数据表的脚本<br>3-5 网上书店基本流程...
配置FILTERDISPATCHER过滤器 6<br>2.3. 配置STRUTS.PROPERTIES 6<br>2.4. 编写一个简单的ACTION类 7<br>2.5. STRUTS.XML配置文件 8<br>2.6. 在相应位置提供JSP文件 10<br>2.7. 转换器(CONVERTER) 10<br>2.8. 拦截...
Address private int aid; private String aname; public int getAid() { ... <s:select name="address" headerKey="-1" headerValue="请选择" list="lis" listKey="aid" listValue="aname" /> </s:form>
<br>04 在Struts 2.0中国际化(i18n)您的应用程序<br>05 转换器(Converter)——Struts 2.0中的魔术师<br>06 在Struts 2.0中实现表单数据校验(Validation)<br>07 Struts 2的基石——拦截器(Interceptor)<br>08 ...
— Web 应用的发展<br>— Model 1 和Model 2<br>— MVC 思想<br>— MVC 模式的优势<br>— 常用MVC 框架及其特征<br>— Struts 1 的基本结构及其存在的问题<br>— WebWork 的基本结构<br>— Struts 2 的起源<br>— ...
1. 导入的包<br><br>l struts2的五个基础包:commons-logging-1.1.jar;...<br><br>xwork-2.0.0.jar.<br><br>l spring的核心包:spring.jar<br><br>l 二者集成开发所需的包:struts-spring-plugin-2.0.6.jar<br>
在天极网看了一篇用JBuilder实现的“Struts+... <br><br> <br><br>所用软件或包的版本: <br>Struts 1.2 <br>Spring 1.2.8 <br>Hibernate 3.1 <br>Oracle 9i <br>MyEclipse4.1.1 <br><br>具体代码如下: <br>TFile类:
第九章 开发Struts 1.x应用 145<br>9.1 介绍 145<br>9.2 创建Struts项目 147<br>9.2.1 创建Web项目 148<br>9.2.2 加入 Struts开发功能 148<br>9.3 使用Struts工具 150<br>9.3.1 Struts配置文件编辑器 150<br>9.3.2 ...
正则表达式<br>lucene索引合并<br>探查Weblogic JDBC Multipool 问题 <br>struts通用Exception处理 <br>Grails中默认数据库HSQLDB点滴<br>从request获取各种路径总结<br>DIV实现的表格自动伸张与收缩<br>java 邮件...
<br>3、如果涉及到新建JSP页面,注意在新建文件时选择'寻觅插件'下的向导,可以快速构建JSP列表页面.<br><br><br>主要功能:<br>1、SSH框架一键配置<br>2、JSP列表标签导入及JSP页面列表快速生成(内置两套开源标签)...
<br>3、如果涉及到新建JSP页面,注意在新建文件时选择'寻觅插件'下的向导,可以快速构建JSP列表页面.<br><br><br>主要功能:<br>1、SSH框架一键配置<br>2、JSP列表标签导入及JSP页面列表快速生成(内置两套开源标签)...