Buggy code:
@ Controller public class DatalistBuilderWebController { public static final String PREFIX_SELECTED = "selected_" ; public static final String PREFIX_BINDER_PROPERTY = "binder_" ; @ Autowired DataListService dataListService ; @ Autowired AppService appService ; @ Autowired DatalistDefinitionDao datalistDefinitionDao ; @ Autowired PluginManager pluginManager ; @ RequestMapping ( "//console//app//(*:appId)//(~:version)//datalist//builder//(*:id)" ) public String builder ( ModelMap map , @ RequestParam ( "appId" ) String appId , @ RequestParam ( value = "version" , required = false ) String version , @ RequestParam ( "id" ) String id , @ RequestParam ( required = false ) String json ) throws Exception { } @ RequestMapping ( value = "//console//app//(*:appId)//(~:version)//datalist//builderSave//(*:id)" , method = RequestMethod . POST ) public void save ( Writer writer , @ RequestParam ( "appId" ) String appId , @ RequestParam ( value = "version" , required = false ) String version , @ RequestParam ( "id" ) String id , @ RequestParam ( "json" ) String json ) throws Exception { } @ RequestMapping ( { "//console//app//(*:appId)//(~:appVersion)//datalist//builderPreview//(*:id)" , "//client//app//(*:appId)//(*:appVersion)//datalist//(*:id)" } ) public String preview ( ModelMap map , HttpServletRequest request , @ RequestParam ( "appId" ) String appId , @ RequestParam ( value = "appVersion" , required = false ) String appVersion , @ RequestParam ( "id" ) String id , @ RequestParam ( required = false ) String json ) throws Exception { } @ RequestMapping ( "//json//console//app//(*:appId)//(~:appVersion)//builder//actions" ) public void getBuilderDataActionList ( ModelMap map , Writer writer , @ RequestParam ( "appId" ) String appId , @ RequestParam ( required = false ) String appVersion , HttpServletRequest request ) throws Exception { } @ RequestMapping ( "//json//console//app//(*:appId)//(~:appVersion)//builder//binder//columns" ) public void getBuilderDataColumnList ( ModelMap map , Writer writer , @ RequestParam ( "appId" ) String appId , @ RequestParam ( required = false ) String appVersion , @ RequestParam String id , @ RequestParam String binderId , HttpServletRequest request ) throws Exception { } @ RequestMapping ( "//dbuilder//getFilterTemplate" ) public String getBuilderFilterTemplate ( ModelMap model , @ RequestParam ( "json" ) String json ) throws Exception { Map < String , Object > obj = PropertyUtil . getPropertiesValueFromJson ( json ) ; DataListFilter filter = new DataListFilter ( ) ; filter . setLabel ( obj . get ( "label" ) . toString ( ) ) ; filter . setName ( obj . get ( "name" ) . toString ( ) ) ; if ( ( obj . get ( "operator" ) ) != null ) { filter . setOperator ( obj . get ( "operator" ) . toString ( ) ) ; } if ( ( obj . get ( "type" ) ) != null ) { Map typeMap = ( ( Map ) ( obj . get ( "type" ) ) ) ; DataListFilterType type = ( ( DataListFilterType ) ( pluginManager . getPlugin ( typeMap . get ( "className" ) . toString ( ) ) ) ) ; if ( type != null ) { <START_BUG> type . setProperties ( ( ( Map ) ( obj . get ( "properties" ) ) ) ) ; <END_BUG> filter . setType ( type ) ; } } model . addAttribute ( "template" , filter . getType ( ) . getTemplate ( new DataList ( ) , filter . getName ( ) , filter . getLabel ( ) ) ) ; return "dbuilder//filterTmplate" ; } protected DataListBinder createDataListBinderFromRequestInternal ( String binderId , HttpServletRequest request ) { } protected DataList parseFromJsonParameter ( ModelMap map , DataList dataList , String id , HttpServletRequest request ) { } }

Fix:
type . setProperties ( ( ( Map ) ( typeMap . get ( "properties" ) ) ) ) ;