Package org.nutz.mvc.adaptor

Source Code of org.nutz.mvc.adaptor.Params

package org.nutz.mvc.adaptor;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.nutz.lang.Mirror;
import org.nutz.mvc.adaptor.convertor.ArrayParamConvertor;
import org.nutz.mvc.adaptor.convertor.DateParamConvertor;
import org.nutz.mvc.adaptor.convertor.StringParamConvertor;
import org.nutz.mvc.adaptor.extractor.BaseParamExtractor;
import org.nutz.mvc.adaptor.extractor.MapParamExtractor;

public abstract class Params {

    /**
     * 构造参数转换器
     *
     * @param type
     *            要转换的目标类型
     * @param datefmt
     *            如果目标类型是 DateTime 类似的类型,可以声明一个特殊转换格式,<br>
     *            如果为 null 表示用 Times.D 函数自动猜测
     */
    public static ParamConvertor makeParamConvertor(Class<?> type,
                                                    String datefmt) {
        if (type.isArray())
            return new ArrayParamConvertor(type.getComponentType());

        Mirror<?> mirror = Mirror.me(type);
        if (mirror.isDateTimeLike()) {
            return new DateParamConvertor(type, datefmt);
        }

        return new StringParamConvertor();
    }

    /**
     * 构造参数提取器
     */
    @SuppressWarnings("unchecked")
    public static ParamExtractor makeParamExtractor(HttpServletRequest req,
                                                    Object refer) {
        if (refer != null && Map.class.isAssignableFrom(refer.getClass())) {
            return new MapParamExtractor(req, (Map<String, Object>) refer);
        }
        return new BaseParamExtractor(req);
    }
}
TOP

Related Classes of org.nutz.mvc.adaptor.Params

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.