一尘不染

使用ajax调用Struts 2操作,该操作将字符串直接写入响应中不会返回该字符串

jsp

在struts2应用程序中,我正在调用Ajax请求,并将字符串直接写入响应,如下所示,并返回操作null的execute方法。

ServeletActionContext.getResponse().getOutputStream().print("sample string");
return null;

struts.xml下面的声明中,(以下是应用程序如何以正常工作的结果类型声明操作的方式。由于我不需要调用JSP或其他操作的结果,因此未添加结果标签)

<action name="controller" class="controller">

我将剖面图映射到 application-context.xml

<bean id="controller" class="com.test.ControllerAction" scope="prototype">

然后我有如下的ajax调用,

$.ajax({url:"/root/me/controller.action",success:function(result){
    alert(result);
}});

但是问题出在上面,而不是警告"sample string"我为响应编写的内容,而是警告上述Ajax调用所在的整个JSP页面。我在这里想念什么?


阅读 249

收藏
2020-06-08

共1个答案

一尘不染

stream默认情况下返回结果类型,它输出文本。

<action name="controller" class="ControllerAction">
  <result type="stream">
    <param name="contentType">text/html</param>
    <param name="inputName">stream</param>
  </result>
</action

stream应该是财产类型ImputStream;

public class ControllerAction extends ActionSupport {

  private InputStream stream;

  //getter here
  public InputStream getStream() {
    return stream;
  }

  public String execute() throws Exception {
    String str = "sample string";
    stream = new ByteArrayInputStream(str.getBytes());
    return SUCCESS;
  }
}
2020-06-08