Op mijn werk hier beschikken over een home made implementatie van het MVC framework a la struts welke in principe prima werkt, maar nog wat functionaliteit mist.
Ik loop nu echter tegen een probleem aan waarvoor ik niet direct een oplossing hebt en het is allemaal de schuld van de HTML standaard
De meeste van jullie weten wel dat HTML checkbox elementen alleen in de request parameters aanwezig zijn wanneer deze zijn aangevinkt. Wanneer de checkbox leeg is, wordt deze gewoon genegeerd tijdens het posten van het HTML formulier.
Hier ligt ook mijn probleem, ik zal het proberen duidelijk te maken aan de hand van een voorbeeld.
Ik heb een Collection met Employee objecten welke weer een id en een naam bezitten. Tevens heb ik een formbean object welke ik gebruik als DTO tussen mijn JSP en Action. Deze zien er ongeveer alsvolgt uit:
Nu populaten we het object EmployeeFormBean automatisch aan de hand van onze workflow. De geconfigureerde formbean wordt uit de sessie gehaald en op basis van de parameternamen de juiste waarden geset (dit doen we met behulp van apache commons-beanutils).
De grap is echter.. Dat aangezien uitgevinkte checkboxes niet in je request parameters zitten en dus employeeBean.setSelected() nooit wordt aangeroepen. Hierdoor weet ik dus niet of een checkbox, welke aanstond, uitgezet is?
Ik zie tot nu nog maar 1 optie om dit probleem op te lossen:
- In mijn specifieke action nog maals door de request parameters heenlopen en de missende employees deselecteren (een niet generieke en imo ranzige oplossing).
Ik hoop dat er iemand hier rondloopt die het "missende checkbox probleem" al eens op een generieke wijze heeft opgelost of iemand die een goed idee heeft..
Ik loop nu echter tegen een probleem aan waarvoor ik niet direct een oplossing hebt en het is allemaal de schuld van de HTML standaard
De meeste van jullie weten wel dat HTML checkbox elementen alleen in de request parameters aanwezig zijn wanneer deze zijn aangevinkt. Wanneer de checkbox leeg is, wordt deze gewoon genegeerd tijdens het posten van het HTML formulier.
Hier ligt ook mijn probleem, ik zal het proberen duidelijk te maken aan de hand van een voorbeeld.
Ik heb een Collection met Employee objecten welke weer een id en een naam bezitten. Tevens heb ik een formbean object welke ik gebruik als DTO tussen mijn JSP en Action. Deze zien er ongeveer alsvolgt uit:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| public class Employee { private int id; private String name; ..... (getters, setters, etc) } public class EmployeeBean { private Employee employee; private boolean selected; //Checkbox wel / niet geselecteerd ..... (getters, setters, etc) } public class EmployeeFormBean { private Collection employees; private .... //Nog wat meer variabelen van het HTML form. } |
Nu populaten we het object EmployeeFormBean automatisch aan de hand van onze workflow. De geconfigureerde formbean wordt uit de sessie gehaald en op basis van de parameternamen de juiste waarden geset (dit doen we met behulp van apache commons-beanutils).
De grap is echter.. Dat aangezien uitgevinkte checkboxes niet in je request parameters zitten en dus employeeBean.setSelected() nooit wordt aangeroepen. Hierdoor weet ik dus niet of een checkbox, welke aanstond, uitgezet is?
Ik zie tot nu nog maar 1 optie om dit probleem op te lossen:
- In mijn specifieke action nog maals door de request parameters heenlopen en de missende employees deselecteren (een niet generieke en imo ranzige oplossing).
Ik hoop dat er iemand hier rondloopt die het "missende checkbox probleem" al eens op een generieke wijze heeft opgelost of iemand die een goed idee heeft..
The ships hung in the sky in much the same way that bricks don’t.