What Is Wrong

Nothing happens when I click this link?

When the callback attached to an anchor is not evaluated, make sure you check that #with: or #text: is the last message sent to the anchor brush.

html anchor
callback: [ self close ];
with: [
html image
fileName: 'closeButton.png';
mimeType: 'image/png'].

I have problems with the canvas api, where should I look?

Make sure you check that #with: or #text: is the last message sent to the anchor brush.

I have problems with forms or input fields, where should I look?

Make sure that you have one, and only one form around your input fields.

My Seaside session object does not receive #unregistered?

When a Seaside session is not used during a certain duration, it expires. After a session has expired, it cannot be used any more.

From time to time, Seaside processes expired sessions and sends them #unregistered. This is not immediate and it may take some time before Seaside enters this expiry process. With its default algorithm, Seaside expiry process occurs only when starting a new session, once every 10 sessions in average (see #registerRequestHandler: and #shouldCollectHandlers). If no new session are started, the #unregistered message is not sent. The more new sessions are created, the more the #unregistered message is sent.

Beware, a common mistake is to name the method #unregister rather than #unregistered

Avi Bryant 3 Oct 2004

Original post

One of the things I added in the recent 2.5b5 release was an ExpiryTest application which let me do some ad-hoc testing of the expiration and unregistration mechanism. As far as I can tell, things are actually working, although it’s fairly erratic when exactly #unregistered will get sent - usually quite a while after the session actually expires, since the cleanup is only triggered by (on average) every 10th new session creation.

If you want to play with this yourself, execute WAExpiryTest install and then go to /seaside/expiry. Hopefully the links/stats are fairly self explanatory.

I think what I will probably do is start a background process that does the cleanup every few minutes, instead. The only small concern I have about this is that it’s one more thing to break - you might not notice that the cleanup process had died somehow, and end up with a lot of expired sessions sitting around in memory. The way it is now, it’s tied directly to the web server process, and if that goes down you’ll hear about it :).


My page displays unexpected text

When you see unexpected text in your rendered page (typically html tag names), you may have to verify that you are using the correct renderer class.

When you are using the old rendering API, you must tell Seaside to use the corresponding renderer class WARenderCanvas. Your component must implement #rendererClass like this

^ WARenderCanvas

This is especially important when you upgrade to Seaside 2.7 from an older version. In older versions of Seaside the default renderer was WARenderCanvas. Starting with Seaside 2.7, the default renderer is WARenderCanvas. Starting with Seaside 2.8, the old WARenderCanvas is no longer available.

Why can’t I start WAKom on port 80?

Ports below 1024 require root rights. Make sure you have no other service listening on TCP port 80.