cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Grzegorz Kossakowski <>
Subject Re: Cocoon 2.2 - Block name required in file path?
Date Thu, 11 Oct 2007 18:06:42 GMT
Grzegorz Kossakowski pisze:
> Hugh Sparks pisze:
>> This is a 2.1 to 2.2 migration issue.
>> I created a simple c2 block using:
>> mvn archetype:create \
>>                -DarchetypeGroupId=org.apache.cocoon \
>>                -DarchetypeArtifactId=cocoon-22-archetype-block \
>>                -DarchetypeVersion=1.0.0-RC3-SNAPSHOT \
>>       \
>>                -DartifactId=AAQuotes
>> Then I modified it to do an example I have working in
>> cocoon 2.1: a simple application that displays a
>> randomly selected quotation and image.
>> The quotations work as expected, but the path to the
>> images in the result.jx template (shown below) requires
>> the name of my block in the path:
>>        <img src="AAQuotes/${imageNumber}.gif"/>
>> I ported this example from a working cocoon 2.1.X version
>> and the image tag was simply:
>>        <img src="${imageNumber}.gif"/>
>> Why is the block name required in the path to fetch the image
>> when using cocoon 2.2? I would expect the location of the sitemap
>> to be the root for finding files. If I omit the block name, I
>> get an error of the form:
>>    javax.servlet.ServletException: No block for /148.gif
> I wonder why request for "/148.gif" ever happens. I mean, isn't a browser supposed to
make request
> relatively to the path of html document? If so, the mount path of a block should not
be making any
> problems at all.
> Another comment is that making a block simply mounted at "/" AND basing on this setting
> developing a block is not a good idea for two reasons:
> 1. Mount path of block can be changed externally (to the block) by using Cocoon Spring
> and suitable property
> 2. The idea of block is that it is reusable unit that has it's own URI space for living.
This design
> decision makes it possible to extend and compose blocks.

Oups, hit the "send" button too early. I wanted to say, that if you need an absolute path
resource in a block you should use "servlet: protocol + servletLinkRewriter" combo. Forms
makes an extensive use of this technique and you can have a look at this document[1] to get
an idea
how it works.

I would only add that if you need to reference a resource from current (your own) block you
can use
this syntax:
servlet:/path/to/your/resource (ommitting the part that contains block's name)


Grzegorz Kossakowski
Committer and PMC Member of Apache Cocoon

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message