繁体   English   中英

从Struts2动作类调用Javascript

[英]Call Javascript from Struts2 Action Class

我想从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

请帮忙 ?

您正在尝试提交两个响应-首先直接提交给HttpServletResponse ,然后使用Struts2命名结果(即SUCCESS )。

将JavaScript代码放在视图层中。

您能描述一下为什么需要从Struts2动作中调用javascript吗,也许它将帮助我们为您提供更好的方法,而史蒂文说的是正确的,您尝试提交2个响应

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM