[jdom-interest] Persistent forms question
Brad Cox
bcox at virtualschool.edu
Sat Mar 20 08:04:35 PST 2004
I've hit a snag in supporting persistent form defaults in
http://virtualschool.edu/jwaa and http://virtualschool.edu/ale and
hope someone here can help. Longwinded background follows;
JDOM-specifics at the end. Here's the outline of where I hit the snag:
void rewriteRadioAndCheckboxFields(Element element)
throws JDOMException, ValidationFault
{
XPath p =
XPath.newInstance(".//input[@type=radio]|.//input[@type=checkbox]");
for (Iterator i = p.selectNodes(element).iterator(); i.hasNext(); )
{
Object o = i.next();
Element e = (Element)o;
String n = e.getName();
String nameAttr = e.getAttributeValue("name");
String checkedAttr = e.getAttributeValue("checked");
if (nameAttr == null)
throw new ValidationFault(n+" element requres a name attribute");
fieldNameList.add(nameAttr);
if (checkedAttr != null)
continue;
...now what?...
}
}
The problem is the now what section. If this were a text or password
field, I could do
e.setAttribute("value", "$!form.getValue('foo')"/> and velocity would
splice in the value at runtime, triggered by the $! prefix. This
doesn't work with <input name="foo" type="radio"/> (or checkbox),
which maps to <input name="foo" type="radio" checked/> if foo is
non-null or minus the checked otherwise. I can't use velocity to
compute the value because this wouldn't be well-formed XML.
What I'm considering is to replace the entire element (e) with
several lines like this
#if ($!form.getValueList('radio').contains('Yes'))
<input name="radio" value="Yes" type="radio"
checked="checked"/>
#else
<input name="radio" value="Yes" type="radio"/>
#end Yes
but that runs afoul of what I can do inside an iterator (just remove, not add).
Maybe I can rewrite the current element (e) with the long multiline
replacement shown above, passed in as a single long line of Text?
Will try that. Meanwhile, better ideas are welcome!
--
Brad J. Cox, PhD, 703 361 4751, http://virtualschool.edu
http://virtualschool/ale Action Learning Environment
http://virtualschool.edu/mybank Digital Rights Management System
http://virtualschool.edu/jco Java Cryptographic Objects (JCO)
http://virtualschool.edu/jwaa Java Web Application Architecture (JWAA)
http://virtualschool.edu/java+ Java Preprocessor (Java+)
More information about the jdom-interest
mailing list