ホームページ  >  記事  >  ウェブフロントエンド  >  Struts2ファイルをアップロードしてプログレスバーを追加する機能を実装したのですが、Struts2の戻り値が取得できないのはなぜですか?check_html/css_WEB-ITnoseを手伝ってください。

Struts2ファイルをアップロードしてプログレスバーを追加する機能を実装したのですが、Struts2の戻り値が取得できないのはなぜですか?check_html/css_WEB-ITnoseを手伝ってください。

WBOY
WBOYオリジナル
2016-06-24 11:58:271195ブラウズ

これはアップロード前のインターフェースです:

これはアップロード完了時のインターフェースです:

インターフェースを取得できない理由がわかりません

これは JSP コードです
​​ <%@ ページ言語="java" import= "java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %>文字列パス = request.getContextPath ();
文字列 BasePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";




<script> <br> var id=0; var i = 0; <br> function addressAction(){ <br> $.post( <br> './upload /progress.action' 、<br> function(data){ SetProgress(data.state.rate); Low");//読み込み完了プロンプト <br> window.clearInterval (id); <br> for(var i =1;i} <br> for ( var j = 1; j & lt; = 10-num; ($ ("#IMG").Append ("& lt; IMG SRC = './Images/Gray.gif'/& GT;") <br>}}, <br>' json '<br>); progress_id = "loading"; <br> function SetProgress(progress) { <br> if (progress) { <br> $("#" + progress_id + " > div").css("width ", String(progress) + "%") ; //#loading div 幅を制御 <br> $("#" + progress_id + " > div").html(String(progress) + "%"); //表示パーセンテージ <br> } <br> } <br> <br>        function submitForm(){ <br>          if($("#f1").val()==""){ <br>            alert('上传文件为空!!!'); <br>            return ; <br>          } <br>          id=window.setInterval(addressAction,10);       <br>          $("form:first").submit();/*提交第一个表单*/ <br>        } <br>     </script>





enctype="multipart/form-data" target="hidden_frame">
 File:


 













上传度条的アクション
public class FileProgressAction extends ActionSupport {
private State state;

public State getState() {
return state;
}

public void setState(State state) {
this.state = state;
}
@Override
public String execute() throws Exception {
HttpSession session = ServletActionContext.getRequest().getSession();
this.state = (状態) session.getAttribute("状態");
if(state==null){
System.out.println("アクションはnullです");
状態 = 新しい 状態();
state.setCurrentItem(0);
}else{
Double a=Double.parseDouble(state.getReadedBytes()+"");
Double b=Double.parseDouble(state.getTotalBytes()+"");
double 結果 = a/b*100;
state.setRate((int)result);
}
成功を返します。
}
}
上传完了アクション 返值就此里
public class FileProgressUploadAction extends ActionSupport{
private File file;
private String fileFileName;
private String fileContentType;
プライベート 文字列 フラグ ================;

public String getFlag() {
return flag;
}

public void setFlag(String flag) {
this.flag = flag;
}

public File getFile() {
return file;
}

public void setFile(File file) {
this.file = file;
}


public String getFileFileName() {
return fileFileName;
}

public void setFileFileName(String fileFileName) {
this.fileFileName = fileFileName;
}

public String getFileContentType() {
return fileContentType;
}

public void setFileContentType(String fileContentType) {
this.fileContentType = fileContentType;
}

@Override
public String execute(){

try {
System.out.println("file:"+file);
InputStream is=new FileInputStream(ファイル);
String root=ServletActionContext.getRequest().getRealPath("/upload");
System.out.println("root:"+root);

System.out.println("name:"+this.fileファイル名);
System.out.println("type:"+this.fileContentType);
ファイル destFile=new File(root,this.fileFileName);

OutputStream os=new FileOutputStream(destFile);

バイト [] b=新しいバイト[1024*1024*10];
int length=0;       
while(true){
length=is.read(b);
if(length<0)
break;
os.write(b,0,length);       
}
setFlag("SUCCESS");
is.close();
os.close();
}catch (Exception e) {
// TODO 自動生成 catch ブロック
e.printStackTrace();
}
System.out.println("=======================);
成功を返します。
}
}



この投稿はかなり長いので、心優しい人が見てくれることを願っています。私は長い間考えてきましたが、その理由がわかりませんでした。

これは struts.xml 構成ファイルです


<パッケージname="upload" namespace="/upload" extends="json-default"> ;






<アクション名="upload" class="com.zjg.action.FileProgressUploadAction">
/index.jsp
/error. jsp