2

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 ページ全体に警告することです。ここで何が欠けていますか?

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 に答える