BTW: one more thing which I initially did not mention is that Wicket generates a hell lot of client-side code with loads of nested DIVs (per component probably), weird and long wicket IDs which tell you nothing (they are automatically created). Pretty tough to get used to - especially for someone trying to understand what happens "under the hood".