package org.nutz.mvc.adaptor.injector; import java.util.Map; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.nutz.lang.Strings; import org.nutz.lang.inject.Injecting; /** * 为PairUploadAdaptor提供支持 * 当get方法的refer为Map时,使用Map的key获取值进行注入 * * @author lAndRaxeE(landraxee@gmail.com) * */ public class MapReferInjector extends ObjectPairInjector { public MapReferInjector(String prefix, Class<?> type) { super(prefix, type); } @SuppressWarnings("unchecked") @Override public Object get(ServletContext sc, HttpServletRequest req, HttpServletResponse resp, Object refer) { Object obj = mirror.born(); Map<String, Object> map = null; if (Map.class.isAssignableFrom(refer.getClass())) map = (Map<String, Object>) refer; for (int i = 0; i < injs.length; i++) { Injecting inj = injs[i]; Object s; if (null != map && map.containsKey(names[i])) s = map.get(names[i]); else s = req.getParameter(names[i]); if (null == s) continue; if (s instanceof String && Strings.isBlank((String) s)) s = null; inj.inject(obj, s); } return obj; } }