2

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

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 页面。我在这里想念什么?

4

2 回答 2

4

默认返回结果类型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;
  }
}    
于 2013-06-16T13:07:34.460 回答
0

而不是使用

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

使用此代码

PrintWriter out = response.getWriter();
out.write("sample string");
return null;

这应该有效。

于 2013-06-16T12:30:55.937 回答