从Struts2返回字符串结果类型
我想发送字符串作为对AJAX xhrPOST方法的响应。我使用Struts2实现服务器端处理。但是,我不知道如何将结果“type”作为字符串发送,以及将字符串从struts2 action类发送到AJAX响应时应该做的映射。通过扩展StrutsResultSupport,您可以非常轻松地创建一个简单的StringResult,但据我所知,框架中没有内置内容 下面是我在过去使用的一个简单StringResult的实现:从Struts2返回字符串结果类型,struts2,Struts2,我想发送字符串作为对AJAX xhrPOST方法的响应。我使用Struts2实现服务器端处理。但是,我不知道如何将结果“type”作为字符串发送,以及将字符串从struts2 action类发送到AJAX响应时应该做的映射。通过扩展StrutsResultSupport,您可以非常轻松地创建一个简单的StringResult,但据我所知,框架中没有内置内容 下面是我在过去使用的一个简单StringResult的实现: public class StringResult extends Strut
public class StringResult extends StrutsResultSupport {
private static final Log log = LogFactory.getLog(StringResult.class);
private String charset = "utf-8";
private String property;
private String value;
private String contentType = "text/plain";
@Override
protected void doExecute(String finalLocation, ActionInvocation invocation)
throws Exception {
if (value == null) {
value = (String)invocation.getStack().findValue(conditionalParse(property, invocation));
}
if (value == null) {
throw new IllegalArgumentException("No string available in value stack named '" + property + "'");
}
if (log.isTraceEnabled()) {
log.trace("string property '" + property + "'=" + value);
}
byte[] b = value.getBytes(charset);
HttpServletResponse res = (HttpServletResponse) invocation.getInvocationContext().get(HTTP_RESPONSE);
res.setContentType(contentType + "; charset=" + charset);
res.setContentLength(b.length);
OutputStream out = res.getOutputStream();
try {
out.write(b);
out.flush();
} finally {
out.close();
}
}
public String getCharset() {
return charset;
}
public void setCharset(String charset) {
this.charset = charset;
}
public String getProperty() {
return property;
}
public void setProperty(String property) {
this.property = property;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getContentType() {
return contentType;
}
public void setContentType(String contentType) {
this.contentType = contentType;
}
}
我曾经用过类似的方法。如果使用该选项,则可以使用以下选项在操作中公开单个字符串属性:
<result name="success" type="json">
<param name="root">propertyToExpose</param>
</result>
不动产曝光
您可以让操作方法返回StreamResult类型的结果,而不是字符串结果
换言之:
class MyAction {
public StreamResult method() {
return new StreamResult(new ByteArrayInputStream("mystring".getBytes()));
}
}
您不必从Struts2操作方法返回字符串。您始终可以从xwork返回结果接口的实现 在action类中复制此
private InputStream inputStream;
public InputStream getInputStream() {
return inputStream;
}
public String execute(){
inputStream = new StringBufferInputStream("some data to send for ajax response");
return SUCCESS;
}
Struts.xml
<action name=....>
<result type="stream">
<param name="contentType">text/html</param>
<param name="inputName">inputStream</param>
</result>
文本/html
输入流
当我们想要发送一个数据作为响应时,这就可以工作了可能您的意思是*返回新的StreamResult(new ByteArrayInputStream(“mystring”.getBytes());*这很有帮助,谢谢我们如何在jsp页面中获取这个字符串值。plz help.StringBufferInputStream不推荐使用。请改为尝试:ByteArrayInputStream(“some…response”.getBytes());