Solon v3.0.3

统一的渲染控制之定制渲染器

</> markdown

相对了上一个方案,此方案不需要基类,可控范围更广(响应也更广),使用更自由。

新风格

v2.8.3 后支持

public class DemoApp {
    public static void main(String[] args){
        Solon.start(DemoApp.class, args, app->{
            //注册一个 "customize" 渲染处理器为
            app.render("customize", (data, ctx) -> {
                //用 json 渲染器生成数据
                String json = app.render("@json").renderAndReturn(data, ctx);
                String jsonEncoded = "";//加密
                String jsonEigned = ""; //鉴名

                ctx.headerSet("E", jsonEigned);
                ctx.output(jsonEncoded);
            });
            
            //通过过滤器,指定渲染处理器为 "customize"
            app.filter(-999, (ctx,chain)->{
                ctx.attrSet("@render", "customize");
            });
        });
    }
}

旧风格

public class DemoApp {
    public static void main(String[] args){
        Solon.start(DemoApp.class, args, app->{
            //注册一个 "customize" 渲染处理器为
            RenderManager.mapping("customize", (data, ctx) -> {
                //用 json 渲染器生成数据
                String json = RenderManager.get("@json").renderAndReturn(data, ctx);
                String jsonEncoded = "";//加密
                String jsonEigned = ""; //鉴名

                ctx.headerSet("E", jsonEigned);
                ctx.output(jsonEncoded);
            });
            
            //通过过滤器,指定渲染处理器为 "customize"
            app.filter(-999, (ctx,chain)->{
                ctx.attrSet("@render", "customize");
            });
        });
    }
}

注意:RenderManager 为内部接口,未来有可能略有变化。