跳至主要內容

参数转换器

大约 3 分钟

参数转换器

IFastParamConverter 接口是FastChar 核心组件之一,用于 FastAction 方法中 将 请求的参数值 转换成对应的类型。

实现一个参数转换器

开发者可以自定义实现 IFastParamConverter 类,进行参数类型的转换,如下:


//参数转换器,实现 UserBean 类型的转换
public class TestParamConverter implements IFastParamConverter {
    @Override
    public Object convertValue(FastAction action, FastParameter parameter, int[] marker) throws Exception {
        if (parameter.getName().equals("selfUser")//判断形参的命名
                && parameter.getType() == UserBean.class)//判断形参的类型 
                {
            
            UserBean user=new UserBean();
            user.setUserId(action.getParamToInt("userId"));
            user.setUserNickName(action.getParam("userNickName"));
            
            marker[0] = 1;//标记此参数类型已处理
            return user;//返回已转换的对象值
        }
        //返回null,则继续寻找下一个参数转换器
        return null;
    }
}

注册转换器

开发者实现一个参数转换器后,需要将该实现类注册到系统中才能被系统发现并使用,注册方式如下:

public class FastCharTestWeb implements IFastWeb {
    /**
     * web启动初始化
     * @param engine
     */
    @Override
    public void onInit(FastEngine engine) throws Exception {
        
       //代理器    
       engine.getOverrides()
                .add(TestParamConverter.class);//注册自定义的参数转换器类
                
        /**此处省略其他配置代码**/
    }
}

使用转换器

开发者无需显式调用参数转换器,FastChar会根据 FastAction 中方法的形参类型自动触发参数转换器,如下:

<form action="http://****/test/updateUser" method="post" >
    <input type="text" name="userId" value="1"/>
    <input type="text" name="userNickName" value="用户昵称"/>
    <input type="submit" title="提交"/>
</form>

内置转换器

FastChar默认内置了常规类型的参数转换器,如下:

FastStringParamConverter

String 类型的形参转换,例如:

    public void updateUser(String stringValue,List<String> stringList,String[] stringArray){
        /**省略其他业务判断逻辑**/
        responseText("更新成功!");
    }

FastNumberParamConverter

int double float long short 数字类型的形参转换,例如:

    public void updateUser(int intValue,List<Integer> intList,Integer[] intArray){
        /**省略其他业务判断逻辑**/
        responseText("更新成功!");
    }

FastBooleanParamConverter

boolean 类型的形参转换,例如:

    public void updateUser(boolean booleanValue,List<Boolean> booleanList,Boolean[] booleanArray){
        /**省略其他业务判断逻辑**/
        responseText("更新成功!");
    }

FastDateParamConverter

Date 类型的形参转换,例如:

    public void updateUser(Date dateValue,List<Date> dateList,Date[] dateArray){
        /**省略其他业务判断逻辑**/
        responseText("更新成功!");
    }

FastEntityParamConverter

FastEntity 类型的形参转换,例如:

    public void updateUser(FcUserEntity entityValue,List<FcUserEntity> entityList,FcUserEntity[] entityArray){
        /**省略其他业务判断逻辑**/
        responseText("更新成功!");
    }

FastEnumParamConverter

Enum 枚举类型的形参转换,例如:

    public void updateUser(UserSexEnum enumValue,List<UserSexEnum> enumList,UserSexEnum[] enumArray){
        /**省略其他业务判断逻辑**/
        responseText("更新成功!");
    }

FastFileParamConverter

FastFile 类型的形参转换,例如:

    public void updateUser(FastFile<?> fileValue,List<FastFile<?>> fileList,FastFile<?>[] fileArray){
        /**省略其他业务判断逻辑**/
        responseText("更新成功!");
    }

参数类型说明

包含了 List<?> 类型的参数,具体前端如何传参,请查看 获取List参数 说明。

上次编辑于:
贡献者: Janesen