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 类型推断它)。
我使用 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 类型推断它)。