??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
]]>
针对以下几种情况的Map:
用法Q?/p>
用法Q?/p>
用法
用法Q?/p>
package action; import org.springframework.mail.SimpleMailMessage; import com.opensymphony.xwork2.Action; } <?xml version="1.0"
encoding="UTF-8"?> struts2的配|文件struts.xml: <?xml version="1.0" encoding="UTF-8"
?> <%@ page language="java" import="java.util.*"
pageEncoding="UTF-8"%> 面sendok.jsp: <%@ page language="java" import="java.util.*"
pageEncoding="UTF-8"%>
<web-app version="2.4"
</web-app>
JavacMailAction.java:
import org.springframework.mail.javamail.JavaMailSenderImpl;
import com.opensymphony.xwork2.ActionSupport;
public class MailAction extends ActionSupport{
spring配置文gapplicationContext.xml:
<beans xmlns="
</beans>
<!DOCTYPE struts PUBLIC
</struts>
面send.jsp:
<html>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN">
<html>
</html>
q行send.jsp发送邮Ӟ成功的话?x)蟩转到sendok.jsp面?/p>
]]>
1、用两重循环的方?/p>
<s:iterator id="data1" value="#request.data" status="d1">
<s:iterator id="data2" value="#request.data1" status="d2">
<s:property value="#data2"/>
</s:iterator>
</s:iterator>
2、用一重@环的Ҏ(gu)
<s:iterator value="collection1" status="status">
<s:property value="collection1[#status.index][0]"/>
<s:property value="collection1[#status.index][1]"/>
</s:iterator>
**************************************************************************************************************** DAO里面如下写:(x) package com.sinoconcept.match.dao.impl; import java.util.List; import org.springframework.dao.DataAccessException; import com.sinoconcept.match.dao.DirctDAO; public class DirctDAOImpl extends BaseDAOHibernateImpl implements DirctDAO { public List loadAll(String className) { } *************************************************************************************************************** service里如下写Q?/strong> package com.sinoconcept.match.service.impl; import java.lang.reflect.InvocationTargetException; import org.apache.struts.util.LabelValueBean; import com.sinoconcept.match.dao.DirctDAO; public class DirctServiceImpl implements DirctService { public List getDirect(String dirName) { List result = this.getDir(dirName); public List getDirectLabelValueBean(String dirName) { List result = this.getDirLableValueBean(dirName); public List getDir(String dirName) { result = dirctDAO.loadAll(dirName); return result; @SuppressWarnings("unchecked") public DirctDAO getDirctDAO() { public void setDirctDAO(DirctDAO dirctDAO) { } *********************************************************************************************************************** Action里面如下讄Q?/p> String status = request.getParameter("status"); List sttusList = dirctService //DrStatus 数据映设文g只要二个字段Qprivate Integer idQprivate String value; manDiaryForm.setStatus(status); request.setAttribute("statusList", sttusList); **************************************************************************************************************** 面上如下获得:(x) <html:select property="status" onchange="sel()"> |
?/span> web 应用中,使用 javascript 的机?x)非常多。虽然不书上提?qing)客h可能从浏览器关闭 js 的执行,但是要想完全的不使用它,目前看来好像q不行。比如一些复杂的 UI 是必通过 js 来实现的Q如下拉式菜单等{)(j)。那?/span> validation 框架支不支持客户端的 js 验证呢?
{案是:(x)当然。具体做法是Q?/span>
- 在页?/span> html:form 标签内部d onsubmit="return validateEditForm(this);" Q具体的语法Q?/span> validate+ ?/span> validation.xml 文g中定义的 form 的名字)(j)Q如Q?/span>
<html:form action="<%=action%>" method="post" onsubmit="return validateEditForm(this);">
-
?/span>
html:form
内部块中dQ?/span>
<html:javascript formName="editForm"/>
如此 2 步即可。虽?dng)?/span> validation 框架非常单易用,但是q是有需要注意的地方?/span>
1. 使用 validation 框架后, form 必须?/span> ValidatorForm 中派生,同时必须在你?/span> validate Ҏ(gu)中先调用基类?/span> validate Ҏ(gu)。对于?/span> Dyna 开头的Ҏ(gu)来创?/span> formbean 的读者,你也必须改ؓ(f)?/span> dyna 开头含?/span> validator ?/span> form ?/span>
2. 注意 DynaValidatorForm Q?/span> ValidatorForm Q和 DynaValidatorActionForm Q?/span> ValidatorActionForm Q的区别。刚开始时从帮助中没看明白q?/span> 2 者的区别Q后来从|上一文章中得到?jin)用法的区别。前者主要的视角?/span> formbean Q而后者的视角?/span> action ?/span>
?/span> formbean 被不同的 action 使用Ӟ对于不同?/span> action 而言Q用的 formbean 的属性集合有大有。此时如果仍然以 formbean Z体,?x)造成其他 action 的不正常使用。因此, struts 中提Z(jin) DynaValidatorActionForm Q?/span> ValidatorActionForm Q。此时在 validation.xml 中的 form 标签?/span> name 属性改?/span> action ?/span> path 属性,又由?/span> action 中有 attribute ?/span> name 属性, validation 框架可Ҏ(gu)q个 action 得到对应?/span> formbean 。例子:(x)
<formset>
<form name="/createAddress">
<field property="city"
depends="required">
<arg0 key="prompt.city"/>
</field>
</form>
<form name="/editAddress">
<field property="state"
depends="required">
<arg0 key="prompt.state"/>
</field>
</form>
</formset>
3. ?/span> DispatchAction 的配合?/span> Struts1.1 ?/span> DispatchAction 使得相关?/span> Action 的关pȝ密,大大减少?jin)应用?/span> Action 的个敎ͼ但是随之而来也带来了(jin)使用 Validation 框架的不便,不能不说是一个遗憾。读者也许认U情况可以用第 2 条的解决Ҏ(gu)来解冻I即采?/span> DyanValidatorActionForm Q然后在 Validation.xml 文g?/span> form 的名UC用不同的 Actiond ?/span> path Q即?/span> validation.xml 中用:(x) <form name="/user.do?method=doAdd"> ?/span> <form name="/user.do?method=doLoad"> 。然而,在目前的版本?/span> Validation 框架q不支持q种辨认。一U绕q这个情늚Ҏ(gu)是,针对同一?/span> Action 实现cd Struts-config.xml 文g中定义多?/span> Action ?/span> path Q在不需要进行验证的地方?/span> Action ?/span> validate 属性置?/span> false 。即Q?/span>
struts-config.xml Q?/span>
<action attribute="editForm" path="/user" name="editForm" input="/editUser.jsp"
parameter="method" scope="request" type="foxgem.struts.UserDispatchAction"
validate="true">
<forward name="load" path="/editUser.jsp"/>
<forward name="action" path="/userquery.do?pageId=1"/>
</action>
<action attribute="editForm" path="/loaduser" name="editForm" input="/editUser.jsp"
parameter="method" scope="request" type="foxgem.struts.UserDispatchAction"
validate="false">
<forward name="load" path="/editUser.jsp"/>
<forward name="action" path="/userquery.do?pageId=1"/>
</action>
然后?/span>
validation.xml
文g中?/span>
2
的方法?/span>
ȝ说来Q?/span> validation 框架大大的提高了(jin)面验证的开发效率,更吸引h的是q些验证Ҏ(gu)可通过自定义的 validator 来得到复用。得这些验证代码更加集中,可维护性得到加强。当焉着目的进行, validation.xml ?/span> validator-rules.xml ?x)随之增长,q部分的l护工作加重?jin)?/span>
同时Q由于不能非常好的和 DispatchAction 一起协作,也得大量?/span> DispatchAction 的项目不能非常好的用它。徏议大量?/span> DispatchAction 和页面验证非常复杂多变的目可以暂时按原来的Ҏ(gu)来验证,不?/span> validation 框架?/span>
至于 validation 框架的其他详l信息,请参?/span> struts 的文档,在此不再赘述?/span>
n http://raibledesigns.com/wiki/Wiki.jsp?page=SecuringDispatchAction DispatchAction ?/span> validation 框架的协作解x案来源于此?/span>
n
http://otn.oracle.com/oramag/oracle/04-jan/o14dev_struts.html
Check Your Form with Validator
n
http://www-900.ibm.com/developerWorks/cn/java/l-struts1-1/
深入
Struts 1.1
n
http://javaboutique.internet.com/tutorials/Struts11Val/
Stepping through the Struts 1.1 Validator
最古老的解决Ҏ(gu)是用String的字节码转换Q这U方案问题是不方便,我们需要破坏对象封装性,q行字节码{换?/p>
q有一U方式是对J2EE容器q行~码讄Q如果J2EE应用pȝq该容器,则会(x)发生qQ而且指定容器配置不符合J2EE应用和容器分ȝ原则?/p>
在Java内部q算中,涉及(qing)到的所有字W串都会(x)被{化ؓ(f)UTF-8~码来进行运。那么,在被Java转化之前Q字W串是什么样的字W集Q?JavaLҎ(gu)操作pȝ的默认编码字W集来决定字W串的初始编码,而且Javapȝ的输入和输出的都是采取操作系l的默认~码?/p>
因此Q如果能l一Javapȝ的输入、输出和操作pȝ3者的~码字符集合Q将能够使Javapȝ正确处理和显C汉字。这是处理Javapȝ汉字的一个原则,但是在实际项目中Q能够正抓住和控制住Javapȝ的输入和输出部分是比较难的。J2EE中,׃涉及(qing)到外部浏览器和数据库{,所以中文问题ؕ码显得非常突出?/p>
J2EE应用E序是运行在J2EE容器中。在q个pȝ中,输入途径有很多种Q一U是通过面表单打包成请求(requestQ发往服务器的Q第二种是通过数据库读入;q有W?U输入比较复杂,JSP在第一ơ运行时L被编译成ServletQJSP中常常包含中文字W,那么~译使用javacӞJava根据默认的操作pȝ~码作ؓ(f)初始~码。除非特别指定,如在Jbuilder/eclipse中可以指定默认的字符集?/p>
输出途径也有几种Q第一U是JSP面的输出。由于JSP面已经被编译成ServletQ那么在输出Ӟ也将Ҏ(gu)操作pȝ的默认编码来选择输出~码Q除非指定输出编码方式;q有输出途径是数据库Q将字符串输出到数据库?/p>
由此看来Q一个J2EEpȝ的输入输出是非常复杂Q而且是动态变化的Q而Java是跨q_q行的,在实际编译和q行中,都可能涉?qing)到不同的操作系l,如果ȝJava自由Ҏ(gu)操作pȝ来决定输入输出的~码字符集,q将不可控制地出Cؕ码?/p>
正是׃Java的跨q_Ҏ(gu),使得字符集问题必ȝ具体pȝ来统一解决Q所以在一个Java应用pȝ中,解决中文q的根本办法是明确指定整个应用pȝl一字符集?/strong>
指定l一字符集时Q到底是指定ISO8859_1 、GBKq是UTF-8呢?
Q?Q如l一指定为ISO8859_1Q因为目前大多数软g都是西方人编制的Q他们默认的字符集就是ISO8859_1Q包括操作系lLinux和数据库MySQL{。这P如果指定Jivel一~码为ISO8859_1Q那么就有下?个环节必L握:(x)
开发和~译代码时指定字W集为ISO8859_1?/p>
q行操作pȝ的默认编码必LISO8859_1Q如Linux?/p>
在JSP头部声明Q?lt;%@ page contentType="text/html;charset=ISO8859_1" %>?/p>
Q?Q如果统一指定为GBK中文字符集,上述3个环节同样需要做刎ͼ不同的是只能q行在默认编码ؓ(f)GBK的操作系l,如中文Windows?/p>
l一~码为ISO8859_1和GBK虽然带来~制代码的方便,但是各自只能在相应的操作pȝ上运行。但是也破坏?jin)Java跨^台运行的优越性,只在一定范围内行得通。例如,Z(jin)使得GBK~码在linux上运行,讄Linux~码为GBK?/p>
那么有没有一U除?jin)应用系l以外不需要进行Q何附加设|的中文~码Ҏ(gu)解决Ҏ(gu)呢?
Java/J2EEpȝ的统一~码定义为UTF-8。UTF-8~码是一U兼Ҏ(gu)有语a的编码方式,惟一比较ȝ(ch)的就是要扑ֈ应用pȝ的所有出入口Q然后用UTF-8厠Z结扎”它?/p>
一个J2EE应用pȝ需要做下列几步工作Q?/p>
以上讨论?jin)Java/J2EE的中文问题。如果整个应用系l是从开始进行开发,那么l一指定~码为UTF-8非常容易做到。如果是在英文源代码基础上二ơ开发,那么首先要将原来的源代码转换为统一~码UTF-8Q那么这U{换工作会(x)带来一定的ȝ(ch)?/p>
有了(jin)q个解决Ҏ(gu)Q无Z用什么框架Struts 或JSF或未来出现的Java技术,l一成UTF-8的方案都不会(x)出现qQ笔者以前在Jsp/Servlet时就Zq个原则Q后来用Struts{框Ӟ从未被ؕ码困扰过Q希望本Ҏ(gu)公布出来供更多初学者分享,减少Java/J2EE的第一个拦路虎Q也避免采取一些(f)时解x案?br />
***********************************************************************************************************************
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<servlet-name>action</servlet-name>
</filter-mapping>
***********************************************************************************************
hibernate+mysql写入数据库的中文?b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">qQ怎么解决Q?
hibernate.hbm.xml加上属?
<property name=\"connection.useUnicode\">true</property>
<property name=\"connection.characterEncoding\">UTF-8</property>
mysql 的驱动用3.0.15以上版本?
加个Filter, 使用UTF-8字符集就可以?
1.使ApplicationResources.properties支持中文
建立一个ApplicationResources_ISO.properties文gQ把应用E序用的message都写q去Q然后在dos下执行这个命令,
native2ascii -encoding gb2312 ApplicationResources_ISO.properties ApplicationResources.properties
q样׃(x)ISO~码的ApplicationResources转换成GB2312~码的格式了(jin)Q同时保存到ApplicationResources.properties.
native2asciiq个工具是jdk自带的一个东东,所以如果path都设定正就可以直接q行?jin),你可以?java_home$/bin下找C?br />转换后的中文cM于这个样?br />iso 格式下 :(x)tj.type=商品车类?br />gb2312格式下 :(x)tj.type=\u5546\u54c1\u8f66\u7c7b\u578b
然后在struts-config.xml中设|应用这个资源文?br /> <message-resources parameter=\"com.huahang.tj.ApplicationResources\" key=\"org.apache.struts.action.MESSAGE\" />
开发jsp时在jsp的开头写?lt;%@ page contentType=\"text/html; charset=gb2312\" %>Q将字符集设|成gb2312可以了(jin)?br />
2.使数据库操作支持中文?br />数据库操作支持中文一直让我比较头痛,但是感谢善解向我推荐?jin)www.chinaxp.orgQ这个网站是用struts框架开发的Q而且
开放源码,下蝲?jin)源码后发现它的中文处理得很好,阅读部分源码Q没有发C么特D的字符集{换,很纳P偶然看到g|友
留言知道原来servlet可以l一讄字符转换。chinaxp.org是q么做的?br />在web.xml中加?br /> <filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>com.huahang.tj.struts.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GB2312</param-value>
</init-param>
<init-param>
<param-name>ignore</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<servlet-name>action</servlet-name>
</filter-mapping>
q里?x)涉及(qing)一个bean,源码如下Q?br />/*
* XP Forum
*
* Copyright (c) 2002-2003 RedSoft Group. All rights reserved.
*
*/
package com.huahang.tj.struts.filters;
import javax.servlet.*;
import java.io.IOException;
/**
* <p>Filter that sets the character encoding to be used in parsing the
* incoming request, either unconditionally or only if the client did not
* specify a character encoding. Configuration of this filter is based on
* the following initialization parameters:</p>
* <ul>
* <li><strong>encoding</strong> - The character encoding to be configured
* for this request, either conditionally or unconditionally based on
* the <code>ignore</code> initialization parameter. This parameter
* is required, so there is no default.</li>
* <li><strong>ignore</strong> - I(yng)f set to \"true\", any character encoding
* specified by the client is ignored, and the value returned by the
* <code>selectEncoding()</code> method is set. I(yng)f set to \"false,
* <code>selectEncoding()</code> is called <strong>only</strong> if the
* client has not already specified an encoding. By default, this
* parameter is set to \"true\".</li>
* </ul>
*
* <p>Although this filter can be used unchanged, it is also easy to
* subclass it and make the <code>selectEncoding()</code> method more
* intelligent about what encoding to choose, based on characteristics of
* the incoming request (such as the values of the <code>Accept-Language</code>
* and <code>User-Agent</code> headers, or a value stashed in the current
* user\'s session.</p>
*
* @author <a href=\"mailto:jwtronics@yahoo.com\">John Wong</a>
*
* @version $Id: SetCharacterEncodingFilter.java,v 1.1 2002/04/10 13:59:27 johnwong Exp $
*/
public class SetCharacterEncodingFilter implements Filter {
// ----------------------------------------------------- I(yng)nstance Variables
/**
* The default character encoding to set for requests that pass through
* this filter.
*/
protected String encoding = null;
/**
* The filter configuration object we are associated with. I(yng)f this value
* is null, this filter instance is not currently configured.
*/
protected FilterConfig filterConfig = null;
/**
* Should a character encoding specified by the client be ignored?
*/
protected boolean ignore = true;
// --------------------------------------------------------- Public Methods
/**
* Take this filter out of service.
*/
public void destroy() {
this.encoding = null;
this.filterConfig = null;
}
/**
* Select and set (if specified) the character encoding to be used to
* interpret request parameters for this request.
*
* @param request The servlet request we are processing
* @param result The servlet response we are creating
* @param chain The filter chain we are processing
*
* @exception I(yng)OException if an input/output error occurs
* @exception ServletException if a servlet error occurs
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws I(yng)OException, ServletException {
// Conditionally select and set the character encoding to be used
if (ignore || (request.getCharacterEncoding() == null)) {
String encoding = selectEncoding(request);
if (encoding != null)
request.setCharacterEncoding(encoding);
}
// Pass control on to the next filter
chain.doFilter(request, response);
}
/**
* Place this filter into service.
*
* @param filterConfig The filter configuration object
*/
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter(\"encoding\");
String value = filterConfig.getInitParameter(\"ignore\");
if (value == null)
this.ignore = true;
else if (value.equalsIgnoreCase(\"true\"))
this.ignore = true;
else if (value.equalsIgnoreCase(\"yes\"))
this.ignore = true;
else
this.ignore = false;
}
// ------------------------------------------------------ Protected Methods
/**
* Select an appropriate character encoding to be used, based on the
* characteristics of the current request and/or filter initialization
* parameters. I(yng)f no character encoding should be set, return
* <code>null</code>.
* <p>
* The default implementation unconditionally returns the value configured
* by the <strong>encoding</strong> initialization parameter for this
* filter.
*
* @param request The servlet request we are processing
*/
protected String selectEncoding(ServletRequest request) {
return (this.encoding);
}
}//EOC
加上q个后,在action中就可以直接从form中接收gb2312~码的数据了(jin)Q返回时自然也是gb2312?jin)?br />但是q个好像需要servlet 2.2以上的容?br />
l合上面的方法,我解决了(jin)struts中的中文问题Q现在还没发现新的问题?/font>
1、“No bean found under attribute key XXX?br />在struts-config.xml里定义了(jin)一个ActionFormQ但type属性指定的cM存在Qtype属性的值应该是Formcȝ全名。或者是Q在Action的定义中Qname或attribute属性指定的ActionForm不存在?br />
2、“Cannot find bean XXX in any scope?/strong>
在Action里一般会(x)request.setAttribute()一些对象,然后在{向的jsp文g里(用tag或request.getAttribute()Ҏ(gu)Q得到这些对象ƈ昄出来。这个异常是说jsp要得C个对象,但前面的Action里ƈ没有对象设|到requestQ也可以是session、servletContextQ里?br />可能是名字错?jin),h查jsp里的tag的一般是name属性,或getAttribute()Ҏ(gu)的参数|或者是Action逻辑有问题没有执行setAttribute()Ҏ(gu)先转向?jin)?br />q有另外一个可能,Ua(b)是jsp文g的问题,例如<logic:iterate>?x)指定一个id|然后在@环里<bean:write>使用q个g为name的|如果q两个g同,也会(x)出现此异常。(都是一个道理,request里没有对应的对象。)(j)
3、“Missing message for key "XXX"?/strong>
~少所需的资源,(g)查ApplicationResources.properties文g里是否有jsp文g里需要的资源Q例如:(x)
q行代码?x)找msg.name.prompt资源Q如果AppliationResources.properties里没有这个资源就?x)出现本异常。在使用多模块时Q要注意在模块的struts-config-xxx.xml里指定要使用的资源文件名Uͼ否则当然什么资源也找不刎ͼq也是一个很Ҏ(gu)犯的错误?/p>
4、“No getter method for property XXX of bean teacher?/strong>
5、“Cannot find ActionMappings or ActionFormBeans collection?br />待解冟?/p>
6、“Cannot retrieve mapping for action XXX?br />?jsp?lt;form>标签里指定action='/XXX'Q但q个Actionq未在struts-config.xml里设|过?/p>
7、HTTP Status 404 - /xxx/xxx.jsp
8、没有Q何异怿息,昄I白面
9、“The element type "XXX" must be terminated by the matching end-tag "XXX".?br />q个是struts-config.xml文g的格式错误,仔细(g)查它是否是良构的xml文gQ关于xml文g的格式这里就不赘qC(jin)?/p>
10、“Servlet.init() for servlet action threw exception?/strong>
11、“Resources not defined for Validator?/strong>
上面q些是我在用Struts做项目时遇到q的问题Q其中一些曾困绕我不时_(d)其实大部分都是自׃l心(j)造成的。希望这文章能对你的开发有所帮助QƈƢ迎l箋补充?br />
q条异常信息说得很明白,jsp里要取一个bean的属性出来,但这个beanq没有这个属性。你应该(g)查jsp中某个标{property属性的倹{例如下面代码中的cade应该改ؓ(f)code才对Q?/p>
<
bean:write name
=
"
teacher
"
property
=
"
cade
"
filter
=
"
true
"
/>
Forward的path属性指向的jsp面不存在,h查\径和模块Q对于同一模块中的Action转向Qpath中不应包含模块名Q模块间转向Q记住用contextRelative="true"?/p>
可能是Action里用的forward与struts-config.xml里定义的forward名称不匹配?br />
一般出现这U异常在后面?x)显CZ个关于ActionServlet的异常堆栈信息,其中指出?jin)异常具体出现在代码的哪一行。我曄遇到的一ơ提C如下:(x)
java.lang.NullPointerException
at org.apache.struts.action.ActionServlet.parseModuleConfigFile(ActionServlet.java:
1003
)
at org.apache.struts.action.ActionServlet.initModuleConfig(ActionServlet.java:
955
)
决问题,先下载struts的源码包Q然后在ActionServlet.java的第1003行插入断点,q对各变量进行监视。很丢hQ我竟然把struts-config.xml文g弄丢?jin),因此出现了(jin)上面的异常Q应该是和CVS同步时不心(j)删除的?/p>
q个是利用Validator插g做验证时可能出现的异常,q时你要(g)查validation.xml文gQ看里面使用的资源是否确实有定义Qform的名U是否正,{等?/p>
12.Struts~译中出现“cannot find actionmappings or actionformbeans collection”提C的原因Q?br />
了(jin)一?lt;load-on-startup>0</load-on-startup>
q样开始是没有加蝲q个c,没有初始化struts-config.xmlQ所以找不到
actionmappings or actionformbeans collection?br />
也有可能Dq个问题Q从stuts例子里面拯来就好了(jin)。struts1.1自带?0个jar包?br />
有可能Action和Formbean没有~译Q也?x)有q个问题Q检查一下有没有对应的class文g好。class路径不对可能也会(x)Dq个问题?br />
用的servlet容器和struts版本不对或这两个版本协调有问题?br />在以上几条都不能解决问题的情况下Q可能就是版本的问题?jin),换个高版本试试?/li>
]]>