2015-01-14 6 views
0

Я часто хочу уточнить Отправленные данные, прежде чем использовать его, напримерЕсть ли что-то вроде @PostPostRequest?

public class Song() { 
    public String[] tags; 
    public String csvTags; 

    public void setTagsWithCsv() { 
    // this one should be more complicated for handling real data 
    this.tags = csvTags.split(","); 
    } 
} 

В этом случае, я должен назвать setTagsWithCsv метод внутри метода класса контроллера.

@RequestMapping(value = "/song/create", method = POST) 
public String createSong(Song song) { 
    song.setTagsWithCsv(); 

    songService.create(song); // some code like this will come here 
    ... 
} 

Можно ли вызвать метод с помощью аннотации, подобной '@PostConstruct'? Метод следует вызывать после запроса на отправку.

+1

Нет, нет. Вот для чего нужны 'Конвертер' и' PropertyEditor'. –

+0

Спасибо, я не был знаком с 'Конвертером' и' PropertyEditor'. Я посмотрю на них. –

ответ

1

Может быть, вы просто при условии плохого примера, но если ваша песня находится в виде POJO, вы делаете это на призыв к setCsvTags

public class Song { 
    private String[] tags; 
    private String csvTags; 

    public void setCsvTags(String csvTags) { 
    this.csvTags = csvTags; 
    this.tags = csvTags.split(","); 
    } 

    public void setTags(String[] tags) { 
    this.tags == tags; 
    String newCsvTags = Arrays.toString(tags); 
    this.csvTags = newCsvTags.substring(1, newCsvTags.length() - 1); // get rid of [] 
    } 
} 

или сделать метод, не сохраняя явным тегам массив

public class Song { 

    private String csvTags; 

    public void getTags() { 
    return csvTags.split(","); 
    } 

} 

В противном случае стандартного способа сделать это невозможно, вы можете играть с перехватом запроса до достижения своего Контроллера, но я думаю, что это будет просто пустая трата времени.

Смежные вопросы