All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.nutz.plugins.view.MapView Maven / Gradle / Ivy

There is a newer version: 1.r.69.v20220215
Show newest version
package org.nutz.plugins.view;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.nutz.json.Json;
import org.nutz.lang.Strings;
import org.nutz.mvc.ActionInfo;
import org.nutz.mvc.NutConfig;
import org.nutz.mvc.View;
import org.nutz.mvc.impl.processor.ViewProcessor;
import org.nutz.mvc.view.VoidView;

/**
 * 根据返回值来选择适当的视图进行渲染

* 使用方法:

* @Ok("map:{success:'>>:/index.html',fail:'>>:/login.html',default :'>>:/'}")

* 这个视图的类型值为map

* 其值应为应该json格式的Map,每个key对应一种普通视图的配置

* 默认视图,如果返回值没有对应的视图,则使用key为null或者default的视图,如果均不存在,则使用VoidView * @author wendal * */ public class MapView implements View { protected Map map; protected View defaultView; @SuppressWarnings("unchecked") public MapView(NutConfig conf, ActionInfo ai, String _type, String _value) { if (Strings.isBlank(_value)) { map = Collections.EMPTY_MAP; defaultView = new VoidView(); } else { Map mapping = Json.fromJsonAsMap(String.class, _value); map = new HashMap(mapping.size()); for (Entry entry : mapping.entrySet()) { View view = ViewProcessor.evalView(conf, ai, entry.getValue()); map.put(entry.getKey(), view); } defaultView = map.get("null"); if (defaultView == null) defaultView = map.get("default"); if (defaultView == null) defaultView = new VoidView(); } } public void render(HttpServletRequest req, HttpServletResponse resp, Object obj) throws Throwable { if (null != obj) { View view = map.get(String.valueOf(obj)); if (view != null) { view.render(req, resp, obj); return; } } defaultView.render(req, resp, obj); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy