Op welke manier kan een Date field het makkelijkst gemapt worden met een String-form field?
Bijvoorbeeld volgende situatie:
De UserClass bevat volgende fields:
In mijn action class kan ik dan ook mooi, volgende doen:
Maar deze aanpak heeft als nadeel dat er een BeanUtils.populate() ServletException wordt geworpen omdat de String (in de form) birthDate natuurlijk niet gemapt kan worden aan het UserObject met als type van birthDate Date.
Verder is deze aanpak natuurlijk ook heel clean omdat je mooi met je objecten kan werken.
Een werkende manier zou de volgende kunnen zijn:
maar het is niet echt een 'mooie' manier, vind ikzelf.. bij aanpassingen moet je dan ook weer deze overal gaan doorvoeren; en dat kan toch niet de bedoeling zijn.
Er is natuurlijk nog een mogelijkheid om elk field apart te gaan mappen met de form; maar ik vind deze manier nogal omslachtig. Is er geen manier of workaround om je form-fields toch gewoon naar je object te mappen op de juiste manier?
Bijvoorbeeld volgende situatie:
Java:
1
2
3
| <form-bean name="userForm" type="org.apache.struts.validator.DynaValidatorForm"> <form-property name="user" type="com.domein.vo.User"/> </form-bean> |
De UserClass bevat volgende fields:
Java:
1
2
3
4
5
6
| private Long id; private String firstName; private String lastName; private Date birthDate; private Address homeAddress; private String telephoneNumber; |
In mijn action class kan ik dan ook mooi, volgende doen:
Java:
1
| userForm.set("user", user); |
Maar deze aanpak heeft als nadeel dat er een BeanUtils.populate() ServletException wordt geworpen omdat de String (in de form) birthDate natuurlijk niet gemapt kan worden aan het UserObject met als type van birthDate Date.
Verder is deze aanpak natuurlijk ook heel clean omdat je mooi met je objecten kan werken.
Een werkende manier zou de volgende kunnen zijn:
Java:
1
2
3
4
5
6
| userForm.set("id", user.getId().toString()); userForm.set("firstName", user.getFirstName()); userForm.set("lastName", user.getLastName()); userForm.set("homeAddress", user.getHomeAddress()); userForm.set("birthDate", user.getBirthDate()); userForm.set("telephoneNumber", user.getTelephoneNumber()); |
maar het is niet echt een 'mooie' manier, vind ikzelf.. bij aanpassingen moet je dan ook weer deze overal gaan doorvoeren; en dat kan toch niet de bedoeling zijn.
Er is natuurlijk nog een mogelijkheid om elk field apart te gaan mappen met de form; maar ik vind deze manier nogal omslachtig. Is er geen manier of workaround om je form-fields toch gewoon naar je object te mappen op de juiste manier?