upload
input.jsp --> action:submit --> result.jsp
其中,action:submit 使用了 FormBean:(可以同时输入文字和上传文件)

public static class myForm extends FormData
{
private String text;
private org.apache.struts.upload.FormFile theFile;

public void setTheFile(org.apache.struts.upload.FormFile theFile)
{
this.theFile = theFile;
}
public org.apache.struts.upload.FormFile getTheFile()
{
return this.theFile;
}
public void setText(String text)
{
this.text = text;
}
public String getText()
{
return this.text;
}
}

input.jsp 中的form定义如下:
<netui:form action="submit" focus="text" enctype="multipart/form-data">
<netui:fileUpload dataSource=
"{actionForm.theFile}"></netui:fileUpload> <br>
<netui:textBox dataSource=
"{actionForm.text}" tagId="text"></netui:textBox> <br>
<netui:button value=
"submit"></netui:button>
</netui:form>

result.jsp中主要代码如下:
<% myForm form = ( myForm )( request.getAttribute("myForm ") );
%>
<br>uploadFile: <%= form.getTheFile()%>
<br>inputText: <%= form.getText()%>

将pageflow单独运行起来可以进行正常处理:
输入:
c:\temp.txt 中国
输出:
uploadFile:temp.txt
inputText:中国

但是,当把这个pageflow作成portlet放在portal上运行时,就不能正常处理:
输入:
c:\temp.txt 中国
输出:
uploadFile:null
inputText:null

-----------------------------------------------------------------

后来,我发现了FormBean的类FormData有一个方法:getMultipartRequestHandler(),通过该方法可以得到一个MultipartRequestHandler,再调用它的getAllElements()方法可以得到一个Hashtable,即
result.jsp中加上语句:
form:<%= (form.getMultipartRequestHandler().getAllElements())%>
可以得到以下 结果:
form:{portlet_1_1{actionForm.text}=[Ljava.lang.String;@1cc06e0, portlet_1_1{actionForm.theFile}=temp.txt}

于是我在result.jsp中改用:
uploadFile:
<%= ( form.getMultipartRequestHandler().getAllElements() ).get("portlet_1_1{actionForm.theFile}")%>
inputText:
<%= ( form.getMultipartRequestHandler().getAllElements() ).get("portlet_1_1{actionForm.text}")%>
可以得到如下的输出结果:
uploadFile:temp.txt
inputText:[Ljava.lang.String;@1cc06e0
为什么在此处得不到输入的字符串?[Ljava.lang.String;@1cc06e0是什么东东?
------

回复此文章 |

如何在Struts 数据库应用程序中实现分页显示


[相关链接]
《JavaWebStudio系列开发工具Visaul Struts版本简介》http://dev.csdn.net/develop/article/28/28871.shtm
《如何实现最简单的Struts程序》http://dev.csdn.net/develop/article/28/28946.shtm
《Struts下拉框的实现》http://dev.csdn.net/develop/article/28/28956.shtm
《Sruts单选框的实现》http://dev.csdn.net/develop/article/29/29042.shtm
《Struts复选框的实现》http://dev.csdn.net/develop/article/29/29043.shtm
《Struts程序各文件之间的关系(1)》http://dev.csdn.net/develop/article/29/29131.shtm
《Struts程序各文件之间的关系(2)》http://dev.csdn.net/develop/article/29/29133.shtm
《如何实现Struts 数据库应用程?据库应用程序中实现分页显示(2)》
《如何在Struts 数据库应用程序中实现记录的删除、更新及链接》
《如何在Struts 数据库应用程序中实现记录的添加》
《如何建立一个带登陆页面的Struts数据库应用程序》
《如何建立一个带登陆页面及角色的Struts数据库应用程序》

上述例子开发环境:Java Web Studio系列开发环境visual strutst版本。
最新JavaWebStudio下载地址:ftp://210.36.64.79/kui
上述例子源程序下载地址:ftp://210.36.64.79/kui




重点提示:JSPOUT属性页的设置是本例唯一与《如何实现Struts 数据库应用程序》中的步骤不同之处,这是本例的核心内容。我们要做的仅仅是在JSPOUT属性页的设置中把“自动分页”选择项选定并输入每页记录数即可。



dbListDAO.java文件:

  这里定义一个DAO类,用于实现数据加的查找、删除、更新、添加及生成分页字符串等功能。getPagestr(int ipage)函数用于生成分页字符串,int ipage参数用于转递当前页码。findSQL(String sql,int ipage)函数用于查找数据库数据,String sql参数用于转递SQL查询语句字符串,int ipage参数用于转递当前页码。

。。。。。。。。。。(省略)

public class dbListDAO {


private Connection con;

private int rowCount;

private int pageCount;

private int length;

private String pagestr;

public int getLength() { return (this.length); }

public void setLength(int length) { this.length=length; }

public String getPagestr(int ipage)

{

String strPage=
"";

if(getLength()>0)

{

strPage+=
"共";

strPage+=String.valueOf(rowCount);

strPage+=
"条记录,共";

strPage+=String.valueOf(pageCount);

strPage+=
"页,当前是第";

strPage+=String.valueOf(ipage);

strPage+=
"页, ";


int istart,iend;

istart=ipage-5;

if(istart<0) {istart=0;}

iend=istart+10;

if(iend>pageCount) {iend=pageCount;}

istart=iend-10;

if(istart<0) {istart=0;}

for(int i=istart;i<iend;i++)

{

strPage+=
"<a href='dbListAction.do?action=find&search=search&page=";

strPage+=String.valueOf(i+1);

strPage+=
"'>";

strPage+=String.valueOf(i+1);

strPage+=
"</a>";

strPage+=
" ";

}

}

this.pagestr=strPage;

return strPage;

}


  中间代码与分页无关,固省略。


public Collection findSQL(String sql,int ipage) {

PreparedStatement ps = null;

ResultSet rs = null;

ArrayList list = new ArrayList();


try {

if (con.isClosed()) {

throw new IllegalStateException(
"error.unexpected");

}

ps = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

rs = ps.executeQu

hofman   2005-11-19 22:25:29 评论:0   阅读:2141   引用:0

发表评论>>

署名发表(评论可管理,不必输入下面的姓名)

姓名:

主题:

内容: 最少15个,最长1000个字符

验证码: (如不清楚,请刷新)

Copyright@2004-2010 powered by YuLog