我经常希望在使用之前优化发布的数据,例如
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'这样的注释来调用方法?应该在发布请求后调用该方法。
答案 0 :(得分: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(",");
}
}
否则,没有标准的方法,你可以在到达你的控制器之前玩请求拦截,但我认为这只是浪费时间。