This commit is contained in:
Redkale
2018-01-30 09:01:19 +08:00
parent 379a399d29
commit 3d0e4ee7d7
2 changed files with 13 additions and 10 deletions

View File

@@ -5,18 +5,21 @@
*/
package org.redkale.net.http;
import org.redkale.convert.Convert;
import org.redkale.util.AnyValue;
/**
* HTTP输出引擎的基类 <br>
* HttpRender主要是给HttpResponse.finish(Object obj)提供指定数据类型的输出策略。 <br>
* HttpResponse.finish(Object obj)内置对如下数据类型进行了特殊处理: <br>
* CharSequence/String <br>
* byte[] <br>
* ByteBuffer <br>
* ByteBuffer[] <br>
* File <br>
* HttpResult <br>
* <pre>
* HttpResponse.finish(Object obj)内置对如下数据类型进行了特殊处理:
* CharSequence/String
* byte[]
* ByteBuffer
* ByteBuffer[]
* File
* HttpResult
* </pre>
* <p>
* 如果对其他数据类型有特殊输出的需求则需要自定义HttpRender。
* <p>
@@ -30,7 +33,7 @@ public interface HttpRender<T> {
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();
}

View File

@@ -480,14 +480,14 @@ public class HttpResponse extends Response<HttpContext, HttpRequest> {
if (hasRender) {
if (onlyoneHttpRender != null) {
if (onlyoneHttpRender.getType().isAssignableFrom(obj.getClass())) {
onlyoneHttpRender.renderTo(this.request, this, obj);
onlyoneHttpRender.renderTo(this.request, this, convert, obj);
return;
}
} else {
Class objt = obj.getClass();
for (HttpRender render : this.renders) {
if (render.getType().isAssignableFrom(objt)) {
render.renderTo(this.request, this, obj);
render.renderTo(this.request, this, convert, obj);
return;
}
}