Return 从 Struts2 动作到 jQuery 的字符串

Return a string from Struts2 action to jQuery

我使用 jQuery Ajax 调用 Struts2 操作,如下所示:

 $.ajax ({  
        url: 'callAction.action',
        type: 'POST',
        data: data,
        dataType: 'string',
        success: function (data) {
           console.log("Success");
        }
});

作为响应,它必须 return 一个字符串返回 jQuery。

private String result;
//getters and setters

public String call()
{
   //some code
   result= "some string";

   return SUCCESS;
}

我想从 Struts 操作中的函数中检索 result 到 jQuery。我怎样才能做到这一点?

您可以使用 stream 结果从操作中获取字符串。

将您的操作配置为使用 stream 结果并将 contentType 设置为 text/plain(或者根本不使用 contentType,因为 text/plain默认设置)。

<action name="callAction" method="call">
    <result type="stream">
        <param name="contentType">text/plain</param>
    </result>
</action>

在您的操作中使用 getter/setter 创建 InputStream 字段,并在您的操作方法中将字符串转换为输入流。

private InputStream inputStream;
// getter/setter

public String callAction() {
    inputStream = new ByteArrayInputStream(
            "some string".getBytes(StandardCharsets.UTF_8));
    return SUCCESS;
}

然后你可以这样执行ajax请求:

$.ajax ({  
    url: '<s:url action="callAction"/>',
    type: 'POST',
    dataType: 'text',
    success: function (data) {
        console.log(data);
    }
});

注意:最好用<s:url>标签构造url-s,没有string这样的dataType,用text 或根本不设置它(jQuery 将尝试根据响应的 MIME 类型推断它)。