按说是没有办法的,因为你的form变的时时,actionform类也要变,这好像不太现实。
解决方案 »
- java调用webservice如果用wsdl2java生成好了本地代码之后,调用的时候如何设置webservice server端的http地址?
- 学习java
- java的print类 可以直接打印页面。
- 消息驱动Bean底层是怎么实现的? 通过什么样的机制获取消息?
- 在webwork的action中如何取得页面输入的值?
- 一个java和C的类比的问题
- 关于分页中的checkbox问题?
- 如何捕捉IE的保存事件
- 装了Windows XP SP2以后,JDBC连不上数据库了
- JBuilder8如何鏈接WebLogic7呢??
- 有状态的会话BEAN的状态体现在哪一方面?
- Struts框架社区BBS-CS[天乙社区]V5.0开始测试
和list backend actionform,好像也不适合这种情况
下面是从它的文章的摘录,可能会对你有帮助. public FooForm extends ActionForm{
private final Map values = new HashMap();
public void setValue(String key,Object value){
values.put(key,value);
}
public object getValue(String key){
return values.get(key);
}
}在Jsp中,你可以这样访问
<html:text property= "value(name)" />
value(name) -> 使用 getValue(name)去访问属性值.当然,你也可以用List来代替Map来实现上面功能,但访问其
值的话就需要使用listName[index]来访问.
不知道你有没有明白.
那一节,结合我们的实际要求作了一个例子发现确实是可以实现的,呵呵。
不过我还想问一下,这种Map-backed ActionForms.能不能作成动态配置的actionform呢???
例如:
<form-property name="values" type="java.util.Map"/>
可不可以呢?
//----------- multiUpload.jsp --------------------
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-template" prefix="template" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %><html:html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Multiple file upload example</title>
</head>
<html:form action="multiUpload.do" enctype="multipart/form-data" method="post">
<html:select property="fileCount">
<html:option value="2">2</html:option>
</html:select>
<br>
<html:file property="imageFile[0]"/> <!--请注意这里 -->
<html:file property="imageFile[1]"/> <!--请注意这里 -->
<br>
<html:submit value="submit" property="submit"/>
<html:reset value="reset" property="reset"/>
</html:form><body>
</body>
</html:html> // MultiUploadAction.javapublic ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception { MultiUploadForm multiUploadForm = (MultiUploadForm) form;
int count=multiUploadForm.getFileCount();
FormFile theFile; byte[] bytesIn =new byte[4096];
int len;
for (int i=0;i<count;i++){
theFile= multiUploadForm.getImageFile(i); BufferedInputStream bis = new BufferedInputStream(theFile.getInputStream());
FileOutputStream fos = new FileOutputStream("d:/"+i+".tmp");
BufferedOutputStream bos = new BufferedOutputStream(fos); while((len=bis.read(bytesIn))!=-1){
bos.write(bytesIn,0,len);
}
bis.close();
fos.close();
bos.close();
theFile.destroy();
} return mapping.findForward("success"); } // MultiUploadForm.java
import org.apache.struts.upload.FormFile;
private Map files = new HashMap(); //不要用List,因为用List在处理set/get很麻烦
private int fileCount; public int getFileCount() { //get value from select named fileCount
return fileCount;
}
public void setFileCount(int fileCount) {
this.fileCount = fileCount;
} public void setImageFile(int key,FormFile value){
files.put(new Integer(key),value);
}
// get value from file named imageFile.
public FormFile getImageFile(int key){
return (FormFile)files.get(new Integer(key));
} //struts-config.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
<!-- form bean -->
<form-beans>
<form-bean name="uploadForm" type="org.apache.struts.webapp.upload.UploadForm" />
<form-bean name="multiUploadForm" type="org.apache.struts.webapp.upload.MultiUploadForm">
<!--注意下面这一行,要设置属性 -->
<form-property name="imageFile" type="org.apache.struts.upload.FormFile" /> </form-bean>
</form-beans>
<!-- action mmapping -->
<action-mappings>
<action name="multiUploadForm" type="org.apache.struts.webapp.upload.MultiUploadAction" validate="false" input="/multiUpload.jsp" scope="request" path="/multiUpload">
<forward name="success" path="/success.jsp" />
</action>
</action-mappings>
<!--controller -->
<controller maxFileSize="2M" />
</struts-config> 在IE地址栏输http://localhost:8080/struts-upload/multiUpload.jsp,你就可以测试一下,
上载的两个文件会放到D:\,分别叫0.tmp和1.tmp. 没有处理验证等.
你在Javascript中可以加入若干个 file 控件,名字叫imageFile[x](x -> 0... 即可.
1)再multiUpload.jsp里用imageFile[0]这种名称struts总认为acitonform应该有一个叫imageFile的Map,而你定义的imageFile事FormFile类型的,Map类型的确叫files2)multiUploadForm是继承DynaActionForm吗?一部分属性在
类里,一部分属性通过配置文件配,可事运行起来好像不认识类里定一的属性,只认识配置文件里定一的属性。