我有一个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
答案 0 :(得分:6)
好像你应该创建你的内部类static
所以可以在不引用外部类的任何对象的情况下实例化它(例如new GenerateAlbumParams.SlideParams()