2011-01-20 74 views
1

我想從struts2調用一個javascript函數。從Struts2操作類調用Javascript

package com.example.controller; 

import java.io.IOException; 
import java.io.PrintWriter; 

import com.opensymphony.xwork2.ActionSupport; 
import javax.servlet.http.HttpServletResponse; 
import org.apache.struts2.interceptor.ServletResponseAware; 


public class FileUploadAction extends ActionSupport implements ServletResponseAware { 

private static final long serialVersionUID = 1L; 
HttpServletResponse response; 

public String execute() throws IOException{ 

    System.out.println("I am in Action"); 

    PrintWriter out; 
    out = response.getWriter(); 


    response.setContentType("text/html"); 
    out.println("<html>"); 
    out.println("<head>"); 
    out.println("<script type=\"text/javascript\">"); 
    out.println("function foo() { "); 
    out.println("alert('From Struts Action');"); 
    out.println("window.top.uploadComplete('1');"); 
    out.println("}"); 
    out.println("</script>"); 
    out.println("</head>"); 
    out.println("<body onload=\"foo();\">"); 
    out.println("</body>"); 
    out.println("</html>"); 

    return SUCCESS; 
} 

@Override 
public void setServletResponse(HttpServletResponse response) { 
    this.response = response; 
} 
public HttpServletResponse getServletResponse() { 
    return this.response; 
} 

} 

在這裏,我甚至沒有得到'警覺'。即它不工作, 並在後端,它拋出警告

[WARN] 404 - GET /success (127.0.0.1) 1393 bytes 
    Request headers 
     Host: 127.0.0.1:8888 
     User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 
     Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
     Accept-Language: en-gb,en;q=0.5 
     Accept-Encoding: gzip,deflate 
     Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
     Keep-Alive: 115 
     Connection: keep-alive 
     Cookie: JSESSIONID=pvv1gasa4o7l 
     Referer: http://127.0.0.1:8888/GWTDemo.html?gwt.codesvr=127.0.0.1:9997 
    Response headers 
     Content-Type: text/html; charset=iso-8859-1 
     Content-Length: 1393 

請幫助?

回答

1

您試圖提交兩個響應 - 首先直接到HttpServletResponse,然後使用Struts2命名結果(即SUCCESS)。

將JavaScript代碼放入您的視圖圖層中。

+0

史蒂芬嗨,你好,感謝響應。 。我正在使用SmartGWT的struts上傳文件上傳,我需要在上傳文件後實現回調。所以,我創建了一個使用Javascript調用的JSNI。所以,我在Struts中寫了Javascript。 – 2011-01-21 07:15:37

0

你能描述一下你爲什麼需要調用從Struts2的行動JavaScript可能將有助於我們爲您提供更好的方式,什麼史蒂芬說是正確的,你試過commiting 2個響應