Hallo Ihr!
Ich hätte mal eine Frage zum Best Practice beim Erweitern von Persistente Entities im Zusammenhang mit Spring MVC. Insbesondere bei einer Collection von Entities.
Angenommen ich habe eine List<Image>, übergebe diese durch den Controller im Response (ModelAndView) an eine JSP. Dort wird diese Liste mit dem JSTL-Tag c:forEach ausgegeben. Soweit wie üblich. Nun soll je Bild noch eine URL ausgegeben werden, die sich aus Properties von Image und einer konfigurierten Basis-URL zusammensetzt. Diese möchte ich nicht auf der JSP (im View) zusammensetzen.
Wie geht man nun am Besten vor? Spontan fällt mir ein, eine Wrapper-Klasse für Image zu erstellen, dort eine Methode getImageUrl() zu implementieren und im Controller List<Image> zu List<ImageWrapper> zu kopieren. Oder von Image zu erweitern. Dabei habe ich aber Probleme mit dem Persistence-Framework bekommen. Gibt es bessere Lösungen? Idealerweise Spring-konform. Wie wird so etwas in der Praxis realisiert?
Danke, Thomas
Ich hätte mal eine Frage zum Best Practice beim Erweitern von Persistente Entities im Zusammenhang mit Spring MVC. Insbesondere bei einer Collection von Entities.
Angenommen ich habe eine List<Image>, übergebe diese durch den Controller im Response (ModelAndView) an eine JSP. Dort wird diese Liste mit dem JSTL-Tag c:forEach ausgegeben. Soweit wie üblich. Nun soll je Bild noch eine URL ausgegeben werden, die sich aus Properties von Image und einer konfigurierten Basis-URL zusammensetzt. Diese möchte ich nicht auf der JSP (im View) zusammensetzen.
Wie geht man nun am Besten vor? Spontan fällt mir ein, eine Wrapper-Klasse für Image zu erstellen, dort eine Methode getImageUrl() zu implementieren und im Controller List<Image> zu List<ImageWrapper> zu kopieren. Oder von Image zu erweitern. Dabei habe ich aber Probleme mit dem Persistence-Framework bekommen. Gibt es bessere Lösungen? Idealerweise Spring-konform. Wie wird so etwas in der Praxis realisiert?
Java:
public class ImageWrapper {
private Image image;
@Autowired
private SeoService seoService;
public String getImageUrl() {
return this.seoService.getImageUrl(image.getTitle());
}
}
HTML:
<c:forEach var="imageWrapper"> items="${imageWrappers}">
<img src="${imageWrapper.imageUrl}" alt="${imageWrapper.image.title}" />
</c:forEach>
Danke, Thomas