Skip to content

YogaSpringView selects random model attribute to render  #234

@nikosk

Description

@nikosk

YogaSpringView randomly selects the first available model attribute although it might not be the intended one.

Steps to reproduce:

  1. Create method in controller with the following signature:
@RequestMapping(method = RequestMethod.GET)
    public List<Entity> list(@Valid ParamsDTO params) {
  1. The model passed to the view will now contain at least the attribute for the bound ParamsDTO object, a BindingResult object and an attribute for the returned value in that order. In this case the ParamsDTO object will be rendered.

Relevant source code:

YogaSpringView.java:32

yogaView.render( request, response, model.isEmpty() ? null : model.values().iterator().next(), response.getOutputStream() );

Solutions (?)

Just out of the top of my head:

a) provide an annotation and have the view scan the model for objects with that annotaton? (But then what about collections? maybe pre-register entities for serialization via annotations or spring config and select the collection if its generic type is in the list of registered types?)

b) provide a filter that will scan the model for key patterns i.e. entity*. This could work because Spring has a mechanism to create names for model attributes, for example when the attribute is a list it will name it "[generic type of the list]List" i.e.: customerList.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions