Thanks for the information,
I took a look at ScriptAction's source code.
I have a better understanding of how it works but it seems I need to import
in my scriptAction other components and functions (DOMParser,
session.setAttribute...).
Actually I'm trying to adapt my flowscript code to a scriptAction as I need
to stay in the same sitemap after the execution of the javascript.
Here's the flowscript I'm trying to adapt.
// loadDocument() reads in an XML file and returns a DOM Document.
function loadDocument(uri) {
var parser = null;
var source = null;
var resolver = null;
try {
parser =
cocoon.getComponent(Packages.org.apache.excalibur.xml.dom.DOMParser.ROLE);
resolver =
cocoon.getComponent(Packages.org.apache.cocoon.environment.SourceResolver.ROLE);
source = resolver.resolveURI(uri);
var is = new Packages.org.xml.sax.InputSource(source.getInputStream());
is.setSystemId(source.getURI());
return parser.parseDocument(is);
} finally {
if (source != null) resolver.release(source);
if (parser != null) cocoon.releaseComponent(parser);
if (resolver != null) cocoon.releaseComponent(resolver);
}
}
// ------------------------- getStreamToSession
-------------------------------------------
// retrieve the XML
var stream = loadDocument("cocoon:/stream");
// save stream in session
var session = cocoon.session;
session.setAttribute("stream", stream);
//
---------------------------------------------------------------------------------------------
Of course, getComponent to load java components is undefined as I don't have
access to the class, the same with the parser.
I noticed that getComponent is part of org.apache.components.flow and
therefore not accessible from scriptAction.
I should be able to import java comonents with BSF.
Do you have any idea how to do it?
Thanks,
Josh
Joerg Heinicke wrote:
>
> On 09.10.2007 17:13 Uhr, Josh2007 wrote:
>
>> I need to access cocoon object from a javascript scriptAction to make use
>> of
>> session, request... functions.
>
> The ScriptAction works more like a usual Cocoon Java component than like
> flowscript. Therefore you have the ObjectModel available which is
> actually only a Map. To access the stuff you need you use the
> ObjectModelHelper and call the corresponding static methods like
> getRequest() or getSession() [1]. If you have a look into ScriptAction's
> source code (which is simple) you will see the other objects it
> registers for usage in the JavaScript:
>
> mgr.registerBean("resolver", resolver);
> mgr.registerBean("objectModel", objectModel);
> mgr.registerBean("parameters", par);
>
> // ScriptAction housekeeping
> mgr.registerBean("actionMap", actionMap);
>
> // helpers
> mgr.registerBean("logger", getLogger());
> mgr.registerBean("request", ObjectModelHelper.getRequest(objectModel) );
> mgr.registerBean("scriptaction", this );
> mgr.registerBean("manager", this.manager );
>
>
>> It seems the only way to access cocoon object is to create a flowscript.
>> Is there another solution as I don't want to redirect to another pipeline
>> after the script is performed unlike flowscript does?
>
> The cocoon object is only a simplified version to access all the stuff
> in the ObjectModel. It's indeed only available in flow script.
>
> Joerg
>
> [1]
> http://cocoon.apache.org/2.1/apidocs/org/apache/cocoon/environment/ObjectModelHelper.html
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
--
View this message in context:
http://www.nabble.com/How-to-access-cocoon-object-from-javascript-scriptAction--tf4596915.html#a13134122
Sent from the Cocoon - Users mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]