将内部类作为参数

时间:2016-10-05 16:07:01

标签: java spring spring-mvc request inner-classes

我有一个Spring控制器,其方法映射到请求:

@RequestMapping(value = "/album", method = RequestMethod.POST)
public void generateAlbum(GenerateAlbumParams params, HttpServletResponse response){
...
}

GenerateAlbumParams 是一个简单的类:

@Getter
@Setter
public class GenerateAlbumParams {

    public enum Position {LEFT_TOP, LEFT_BOTTOM, RIGHT_TOP, RIGHT_BOTTOM}
    private List<SlideParams> slideParams = new ArrayList<>();
}

SlideParams 是:

@Getter
@Setter
public class SlideParams{
    private Boolean checked = false;
    private Long id;
    private GenerateAlbumParams.Position mapLegendPosition;
    private GenerateAlbumParams.Position mapTablePosition;
}

一切正常,但如果我想将 SlideParams 作为 GenerateAlbumParams 的内部类:

@Getter
@Setter
public class GenerateAlbumParams {

    public enum Position {LEFT_TOP, LEFT_BOTTOM, RIGHT_TOP, RIGHT_BOTTOM}
    private List<SlideParams> slideParams = new ArrayList<>();

    @Getter
    @Setter
    public class SlideParams{
        private Boolean checked = false;
        private Long id;
        private Position mapLegendPosition;
        private Position mapTablePosition;
    }
}

它引发了一个例外:

  

HTTP状态500 - 请求处理失败;嵌套异常是   org.springframework.beans.InvalidPropertyException:无效的属性   &#39; slideParams [0]&#39;豆类   [xxx.GenerateAlbumParams]:非法   试图获得财产&amp; slideParams&#39;抛出异常;嵌套   异常是org.springframework.beans.NullValueInNestedPathException:   无效的属性&#39; slideParams&#39;豆类   [xxx.GenerateAlbumParams]:不能   实例化属性类型   [xxx.GenerateAlbumParams $ SlideParams]   自动增长嵌套属性路径;嵌套异常是   org.springframework.beans.BeanInstantiationException:失败   实例   [xxx.GenerateAlbumParams $ SlideParams]:   它是抽象类吗?嵌套异常是   java.lang.InstantiationException:   xxx.GenerateAlbumParams $ SlideParams

1 个答案:

答案 0 :(得分:6)

好像你应该创建你的内部类static所以可以在不引用外部类的任何对象的情况下实例化它(例如new GenerateAlbumParams.SlideParams()