&gt; You need some sort of logic in your views, no matter what system you use, i. e. loops or formatting dates.<p>No you don&#x27;t. Look at Wicket for how to do this right: everything is a component, the only thing[1] your templates contain is a) markup (which is 100% valid, using a namespace for the only wicket-specific part) and b) ids that indicate that a given tag will be replaced with a component. Everything else is handled by the component hierarchy in code, using proper OO polymorphism (it&#x27;s also a great example of proper use of OO, with classes left with only the correct extension points, and classes or methods declared &quot;final&quot; if the developers don&#x27;t intend to support custom ones going forwards). You end up making truly reusable components that can be very small - even something like an address input is a component defined in terms of smaller components.<p>I wish there were Wicket equivalents in other languages.<p>[1] There are a few other conveniences, but they really are minimal