Here is an easy way to get and set values in request and session attributes
and session DOM's from XSP pages:
<xsp:logic>set("request:req1", "Hello, World, from request!");</xsp:logic>
<xsp:expr>get("request:req1")</xsp:expr>
<xsp:logic>set("session:databases/testdb/@driver", "Hello, World, from session
DOM!");</xsp:logic>
<xsp:expr>get("session:databases/testdb/@driver")</xsp:expr>
It works well as-is, but should probably be made more general, cleaned up, and turned
into a logicsheet.
The support code and three sample uses are below.
Tim
===
<?xml version="1.0"?>
<xsp:page
language="java"
xmlns:xsp = "http://apache.org/xsp"
xmlns:request = "http://apache.org/xsp/request/2.0"
xmlns:session = "http://apache.org/xsp/session/2.0" create-session="yes"
xmlns:input = "http://apache.org/cocoon/xsp/input/1.0">
<xsp:structure>
<xsp:include>org.apache.commons.jxpath.JXPathContext</xsp:include>
</xsp:structure>
<xsp:logic>
Object get (String path)
{
String protocol = null;
String attribute = null;
String jxpath = null;
String[] s1 = path.split(":", 2);
if (s1[0].equals("request")) protocol = "request-attr";
if (s1[0].equals("session")) protocol = "session-attr";
if (protocol == null) return null;
String[] s2 = s1[1].split("/", 2);
attribute = s2[0];
if (attribute == null) return null;
if (s2.length == 2) jxpath = s2[1];
if (jxpath == null){
return this._xsp_module_helper.getAttribute(objectModel, protocol, attribute,
null);
}else{
org.w3c.dom.Element e =
((org.w3c.dom.Element)
(this._xsp_module_helper.getAttribute(objectModel, protocol, attribute,
null)));
JXPathContext jxcontext = JXPathContext.newContext(e);
return jxcontext.getValue(jxpath);
}
}
void set (String path, Object value)
{
String protocol = null;
String attribute = null;
String jxpath = null;
String[] s1 = path.split(":", 2);
if (s1[0].equals("request")) protocol = "request-attr";
if (s1[0].equals("session")) protocol = "session-attr";
if (protocol == null) return;
String[] s2 = s1[1].split("/", 2);
attribute = s2[0];
if (attribute == null) return;
if (s2.length == 2) jxpath = s2[1];
if (jxpath == null){
if (s1[0].equals("request")) request.setAttribute(attribute, value);
if (s1[0].equals("session")) request.getSession().setAttribute(attribute,
value);
}else{
org.w3c.dom.Element e =
((org.w3c.dom.Element)
(this._xsp_module_helper.getAttribute(objectModel, protocol, attribute,
null)));
JXPathContext jxcontext = JXPathContext.newContext(e);
jxcontext.setValue(jxpath, value);
}
}
</xsp:logic>
<sample-page>
<xsp:logic>set("request:req1", "Hello, World, from request!");</xsp:logic>
<xsp:logic>set("session:ses1", "Hello, World, from session!");</xsp:logic>
<xsp:logic>set("session:databases/testdb/@driver", "Hello, World, from session
DOM!");</xsp:logic>
<request-test><xsp:expr>get("request:req1")</xsp:expr></request-test>
<session-test><xsp:expr>get("session:ses1")</xsp:expr></session-test>
<session-DOM-test><xsp:expr>get("session:databases/testdb/@driver")</xsp:expr></session-DOM-test>
</sample-page>
</xsp:page>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]