My first JSF: Stateless vs. stateful Loving the URI

An article, posted almost 13 years ago filed in web, design, work, frameworks, java, jsf, programming, stateful & stateless.

I've started working in a company that creates web applications. I discovered a new way of looking at websites, that of websites as an application.


"Hello, have you been sleeping? Wasn't 'RIA' (Rich Internet Application) one of the buzzwords (a few years ago)?"

Yes yes yes, but only recently I found out that the application view differs quite a lot from the view, my initial view, that websites are in essence only a source of information. In my opinion, information should be bookmarkable (and thus be unaffected by the state of things; stateless). But what about applications running on the web, which are essentially still sites on the world wide web?

JSF, a tool I only recently started working with is a tool that is focussed at creating webapplications... and it definitly seems to prefer the stateful approach in creating such web applications (the resulting html pages rely on a session managing the state of things). Originally, I found the output of JSF rather conflicting with my view on how to create correct websites, but my notion of websites was up until recently limited to the idea of website as a source of information. In JSF it takes discipline to create such stateless information websites. One should use the regular HTML <form> tags instead of JSF's own <h:form>s and write your own links by hand, otherwise you get the ugly commandLinks that JSF produces with only a hash sign (#) in the href attribute and an onclick behaviour attached... If you work around all these issues, much of the framework that JSF originally offers becomes obsolete... From an application development perspective, however, one could simply argue that it just works. But if you look at it from an information perspective: how to bookmark this information? Can I pass this link over to my friends via IM? Can I continue where I left? And not to neglect: can search engines index it properly? JSF is quite ok for applications... but for creating informational pages? And one aspect that is both bad for regular websites, and applications, is that javascript is considered to be bad for accessibility (i.e. reduced access for e.g. the visually impaired).

There is not so much of a problem with the application view on web apps (and thus accepting that they are stateful) if they are true web apps (have you ever felt the need to bookmark in Excel/Calc? But in case of a site that simply allows browsing through database content... that is information, not an application! Additionally, I believe that each section, even in a webapp, should allow for bookmarking, giving a user the power to make shortcuts (e.g. from a separate help document), which is one of the core strengths of the world wide web (everything has its own unique identifier, the url).

In essence, my latest observation comes down to the rather simple -I should be ashamed of myself- rule: information should be accessible, not locked up in session ID's that get passed through using cookies, or hidden form submits. Although slightly different rules apply to applications, it should be remembered that one of the core properties of the web is the unique resource identifier, that allows people to bookmark exact locations, no matter where they came from, or what state they are in. Web application builders using JSF, or probably any other'enterprise' framework should take that into account. ... Damn I'm slow.

Op de hoogte blijven?

Maandelijks maak ik een selectie artikelen en zorg ik voor wat extra context bij de meer technische stukken. Schrijf je hieronder in:

Mailfrequentie = 1x per maand. Je privacy wordt serieus genomen: de mailinglijst bestaat alleen op onze servers.