I'm using TBNL in a small web-app.  A common need when developing webapps is to display a form with fields pre-populated from the database (i.e. email address, street address, etc.).

I'm wondering if it's possible to do this with cl-who in some generic way?  I thought perhaps I could  customize cl-who using the convert-tag-to-string-list method.  The function below overrides default handling of (:input) tags to look for a :tuple attribute with a value set to a hash containing the values from the database needed to pre-fill the form the input element is part of.  This approach doesn't work, however, because convert-tag-to-string serializes the string at compile time, and the data needs to be retrieved from the database at run time.  Any ideas?

(defmethod convert-tag-to-string-list ((tag (eql :input)) attr-list body body-fn)
    ;;(declare (ignore attr-list))
    (let ((name (cdr (assoc :name attr-list)))
          (type (cdr (assoc :type attr-list)))
          (tuple (eval (cdr (assoc :tuple attr-list)))))
      (nconc (cons (format nil "<input name='~a' type='~a' value='~a'>"
                           name type (if tuple
                                         (gethash name tuple)
                                         ""))
                   (funcall body-fn body)) (list "</input>"))))


Thanks,

-Adam Thorsen