抱歉我的英文。
我正在尝试使用ANT脚本预编译JSP文件。 有了这个,我从JSP生成了servlet:
<taskdef classname="org.apache.jasper.JspC" name="jasper2">
<classpath id="jspc.classpath">
<pathelement location="C:\j2sdk1.4.2_12\lib\org.apache.jasper.jar" />
<path refid="jbossweb.classpath"/>
</classpath>
</taskdef>
<jasper2 validateXml="false" uriroot="${webapp.path}" package="org.fista.zg.ui.struts.pages"
webXmlFragment="c:/generated_web.xml" outputDir="${webapp.path}/WEB-INF/src" />
</target>
所以,现在我有Servlet类,我想编译这些类。有些类已成功编译,但有些类没有,许多未成功编译的页面抛出相同的错误,例如:
[javac] C:\Documents and Settings\Administrator\workspace\web-admin\WebContent\WEB-INF\src\agencyDelete_jsp.java:79: cannot resolve symbol
[javac] symbol : variable actionForm
[javac] location: class org.fista.zg.ui.struts.pages.agencyDelete_jsp
[javac] new Object[] {((AgencyInputForm)((DefaultInputActionForm)actionForm).getFormBean()).getContractNr()});
[javac] ^
在JSP agencyDelete.jsp中:
<bean:define id="actionForm" name="AgencyForm" />
<%
String message = WebCtrlFactory.getCtrl(request).getLocalizationString("org.fista.zg.ui.struts.agency.remove",
new Object[] {((AgencyInputForm) ((DefaultInputActionForm)actionForm).getFormBean()).getContractNr()});
%>
Ant编译脚本:
<javac destdir="${webapp.path}/WEB-INF/classes" optimize="off" debug="on"
failonerror="false" srcdir="${webapp.path}/WEB-INF/src" excludes="**/*.smap" classpath="C:\Documents and Settings\Administrator\workspace\web-admin\build\classes">
<classpath>
<fileset dir="${webapp.path}/WEB-INF/lib">
<include name="*.jar" />
</fileset>
<path refid="jbossweb.classpath"/>
</classpath>
<include name="**" />
<exclude name="tags/**" />
<exclude name="tiles/**" />
</javac>
所以,请帮我找到问题所在。我认为问题在于:“<bean:define id="actionForm" name="AgencyForm" />
”。为什么编译器看不到这个bean?
答案 0 :(得分:0)
在JSP Scriptlet中访问“actionForm”bean(页面范围变量)的正确方法是
<%
String message = WebCtrlFactory.getCtrl(request).getLocalizationString("org.fista.zg.ui.struts.agency.remove",
new Object[] {((AgencyInputForm) ((DefaultInputActionForm)pageContext.getAttribute("actionForm",PageContext.PAGE_SCOPE)).getFormBean()).getContractNr()});
%>