This commit is contained in:
@@ -5,18 +5,21 @@
|
|||||||
*/
|
*/
|
||||||
package org.redkale.net.http;
|
package org.redkale.net.http;
|
||||||
|
|
||||||
|
import org.redkale.convert.Convert;
|
||||||
import org.redkale.util.AnyValue;
|
import org.redkale.util.AnyValue;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* HTTP输出引擎的基类 <br>
|
* HTTP输出引擎的基类 <br>
|
||||||
* HttpRender主要是给HttpResponse.finish(Object obj)提供指定数据类型的输出策略。 <br>
|
* HttpRender主要是给HttpResponse.finish(Object obj)提供指定数据类型的输出策略。 <br>
|
||||||
* HttpResponse.finish(Object obj)内置对如下数据类型进行了特殊处理: <br>
|
* <pre>
|
||||||
* CharSequence/String <br>
|
* HttpResponse.finish(Object obj)内置对如下数据类型进行了特殊处理:
|
||||||
* byte[] <br>
|
* CharSequence/String
|
||||||
* ByteBuffer <br>
|
* byte[]
|
||||||
* ByteBuffer[] <br>
|
* ByteBuffer
|
||||||
* File <br>
|
* ByteBuffer[]
|
||||||
* HttpResult <br>
|
* File
|
||||||
|
* HttpResult
|
||||||
|
* </pre>
|
||||||
* <p>
|
* <p>
|
||||||
* 如果对其他数据类型有特殊输出的需求,则需要自定义HttpRender。
|
* 如果对其他数据类型有特殊输出的需求,则需要自定义HttpRender。
|
||||||
* <p>
|
* <p>
|
||||||
@@ -30,7 +33,7 @@ public interface HttpRender<T> {
|
|||||||
default void init(HttpContext context, AnyValue config) {
|
default void init(HttpContext context, AnyValue config) {
|
||||||
}
|
}
|
||||||
|
|
||||||
public <V extends T> void renderTo(HttpRequest request, HttpResponse response, V scope);
|
public <V extends T> void renderTo(HttpRequest request, HttpResponse response, Convert convert, V scope);
|
||||||
|
|
||||||
public Class<T> getType();
|
public Class<T> getType();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -480,14 +480,14 @@ public class HttpResponse extends Response<HttpContext, HttpRequest> {
|
|||||||
if (hasRender) {
|
if (hasRender) {
|
||||||
if (onlyoneHttpRender != null) {
|
if (onlyoneHttpRender != null) {
|
||||||
if (onlyoneHttpRender.getType().isAssignableFrom(obj.getClass())) {
|
if (onlyoneHttpRender.getType().isAssignableFrom(obj.getClass())) {
|
||||||
onlyoneHttpRender.renderTo(this.request, this, obj);
|
onlyoneHttpRender.renderTo(this.request, this, convert, obj);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Class objt = obj.getClass();
|
Class objt = obj.getClass();
|
||||||
for (HttpRender render : this.renders) {
|
for (HttpRender render : this.renders) {
|
||||||
if (render.getType().isAssignableFrom(objt)) {
|
if (render.getType().isAssignableFrom(objt)) {
|
||||||
render.renderTo(this.request, this, obj);
|
render.renderTo(this.request, this, convert, obj);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user