2016-10-05 3 views
0

J'ai un contrôleur de printemps avec une méthode mappée sur demande:contrôleur ressort avec classe interne comme paramètre

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

GenerateAlbumParams est une classe simple:

@Getter 
@Setter 
public class GenerateAlbumParams { 

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

et SlideParams est- :

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

Tout fonctionne très bien, mais si je veux faire SlideParams comme classe interne de 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; 
    } 
} 

il thows une exception:

HTTP Status 500 - Traitement des requêtes n'a pas; l'exception imbriquée est org.springframework.beans.InvalidPropertyException: propriété non valide 'slideParams [0]' de la classe du bean [xxx.GenerateAlbumParams]: Illégal tentative d'obtention de la propriété 'slideParams' exception lancée; imbriqué exception est org.springframework.beans.NullValueInNestedPathException: propriété non valide 'slideParams' de la classe de haricot [xxx.GenerateAlbumParams]: Impossible instancier type de propriété [xxx.GenerateAlbumParams $ SlideParams] au chemin de la propriété auto-croissance imbriquée ; l'exception imbriquée est org.springframework.beans.BeanInstantiationException: Echec à instanciation [xxx.GenerateAlbumParams $ SlideParams]: Est-ce une classe abstraite ?; exception imbriquée est java.lang.InstantiationException: xxx.GenerateAlbumParams $ SlideParams

Répondre

4

On dirait que vous devriez faire votre classe interne static peut donc être instancié sans référence à des objets de la classe externe (par exemple new GenerateAlbumParams.SlideParams()