Tôi muốn gửi chuỗi như là một phản ứng với phương pháp AJAX xhrPOST. Tôi đang sử dụng Struts2 để thực hiện xử lý phía máy chủ. Nhưng, tôi không nhận được làm thế nào để gửi kết quả "loại" như chuỗi và lập bản đồ cần được thực hiện để gửi chuỗi từ lớp hành động struts2 đến phản ứng AJAX.Kiểu kết quả chuỗi trả về từ Struts2
Trả lời
Bạn có thể tạo một StringResult đơn giản khá dễ dàng bằng cách mở rộng StrutsResultSupport, nhưng không có gì tồn tại được xây dựng trong khuôn khổ theo như tôi biết.
Dưới đây là một thực hiện mà tôi đã sử dụng trong quá khứ của một StringResult đơn giản:
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;
}
}
Tôi đã sử dụng json plugin để làm những điều tương tự. Nếu bạn sử dụng điều đó, bạn có thể sử dụng thông tin sau để hiển thị thuộc tính Chuỗi duy nhất trong hành động của mình:
<result name="success" type="json">
<param name="root">propertyToExpose</param>
</result>
Bạn có thể có phương thức hành động không trả về kết quả Chuỗi, mà là kết quả của loại StreamResult.
Nói cách khác:
class MyAction {
public StreamResult method() {
return new StreamResult(new ByteArrayInputStream("mystring".getBytes()));
}
}
Bạn không nhất thiết phải trả về một String từ một phương pháp hành động struts2. Bạn luôn có thể trả về việc triển khai giao diện Kết quả từ xwork.
bản sao này trong lớp hành động
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>
này hoạt động khi chúng ta muốn gửi một dữ liệu duy nhất để đáp ứng
Chúng tôi làm gì để nhận được giá trị chuỗi này trong trợ giúp jsp page.plz. –
StringBufferInputStream không được chấp nhận. thay vào đó hãy thử: ByteArrayInputStream ("some ... response" .getBytes()); – fishjd
- 1. Khi sử dụng kiểu chuyển hướng và kết quả chuỗi trong struts2
- 2. Chuyển đổi chuỗi int unsigned trả về kết quả sai
- 3. GetWeekOfYear trả về kết quả sai?
- 4. Trả về kết quả trong từ khóa Khung robot?
- 5. Hiểu nội bộ của Struts2: Cấu hình kết quả
- 6. Chuỗi chia không trả kết quả rỗng
- 7. không thể đặt loại kết quả Struts2 thành json
- 8. Cách trả về chuỗi từ hoạt động bắt đầu cho kết quả
- 9. System.Globalization.Calendar.GetWeekOfYear() trả về kết quả lẻ
- 10. Elasticsearch với phân tích quả cầu tuyết chỉ trả về kết quả cho từ bắt nguồn
- 11. Kiểu trả về kiểu hàm
- 12. YQL trả về kết quả rỗng từ một khách hàng, kết quả được điền từ một số khác
- 13. Truyền đối số cho AsyncTask và trả về kết quả
- 14. Liệt kê với kiểu trả về không phải là chuỗi?
- 15. Tornado Async HTTP trả về kết quả gia tăng
- 16. Số lượng tìm kiếm được trả về kết quả là
- 17. kho lưu trữ extbase findAll() trả về kết quả null
- 18. Máy khách NEST của ElasticSearch không trả về kết quả
- 19. Trả lại nhiều kết quả từ một phương thức
- 20. Trả lại số kết quả phù hợp từ C# dictionary
- 21. Truy vấn LINQ trả về kết quả không chính xác
- 22. Android: Cách nhận kết quả trả về từ hoạt động khi gọi từ Fragment?
- 23. Powershell: Nhận kết quả trả về từ Powershell Script gọi từ bên trong PS Script khác
- 24. On kiểu trả về Void
- 25. Trả về kết quả nhị phân từ máy chủ ảo phantomjs
- 26. Hướng dẫn Django Celery không trả về kết quả
- 27. Trả về char []/chuỗi từ hàm
- 28. Trả về chuỗi C từ một hàm
- 29. Thực hiện một file PHP, và trả về kết quả như là một chuỗi
- 30. Trả lại kết quả từ CHỌN bằng nút-postgres
Có lẽ bạn có nghĩa là * trở StreamResult mới (new ByteArrayInputStream ("mystring" .getBytes())); * Điều này đã giúp, cảm ơn –