[
http://issues.apache.org/jira/browse/TAPESTRY-796?page=comments#action_12360221
]
Michael Frericks commented on TAPESTRY-796:
-------------------------------------------
had to face the problem, too. My application uses a different servlet-path for
each user.
I solved this problem by contributing an own
org.apache.tapestry.engine.ServiceEncoder:
public class ServletPathEncoder implements ServiceEncoder
{
private String _extension;
private String _servletPath;
public void decode(ServiceEncoding encoding)
{
if (!encoding.getServletPath().endsWith(_extension))
{
return;
}
_servletPath = encoding.getServletPath();
}
public void encode(ServiceEncoding encoding)
{
encoding.setServletPath(_servletPath);
}
public void setExtension(String string)
{
_extension = string;
}
}
<service-point
id="ServletPathEncoder"
interface="org.apache.tapestry.engine.ServiceEncoder">
<invoke-factory service-id="hivemind.BuilderFactory"
model="threaded">
<construct class="ServletPathEncoder" >
<set
property="extension"
value="yourExtension" />
</construct>
</invoke-factory>
</service-point>
<contribution configuration-id="tapestry.url.ServiceEncoders">
<encoder id="servletPathEncoder"
object="service:ServletPathEncoder"/>
</contribution>
> page-service-encoder for external service no longer working
> -----------------------------------------------------------
>
> Key: TAPESTRY-796
> URL: http://issues.apache.org/jira/browse/TAPESTRY-796
> Project: Tapestry
> Type: Bug
> Versions: 4.0
> Environment: 4.0rc1, Tomcat 5.5.9, OS X 10.4.3
> Reporter: Paul Cantrell
>
> Using the page-service-encoder to map a file extension to the external page
> service no longer works.
> If I create these three files, the Home page correctly links to Page 2:
> Home.html:
> <html>
> <body>
> <h1>Home Page</h1>
> <a href="#" jwcid="@ExternalLink" page="Page2">Page 2</a>
> </html>
> Page2.html:
> <html>
> <body>
> <h1>Page 2</h1>
> </html>
> Page2.java:
> // insert default page package and imports here
> public class Page2 extends BasePage implements IExternalPage {
> public void activateExternalPage(Object[] x, IRequestCycle y) { }
> }
> However, if I add this single configuration to my Hivemodule:
> <contribution configuration-id="tapestry.url.ServiceEncoders">
> <page-service-encoder id="external" extension="html" service="external"
> />
> </contribution>
> ...then every link goes to the home page. The link on Home correctly gets
> encoded as /myapp/Page2.html, but that request just brings up the Home page
> again.
> No errors appear in the log file.
> The Tapestry servlet is mapped in web.xml as follows:
> <servlet>
> <servlet-name>tapestry</servlet-name>
> <servlet-class>org.apache.tapestry.ApplicationServlet</servlet-class>
> <load-on-startup>1</load-on-startup>
> </servlet>
> <servlet-mapping>
> <servlet-name>tapestry</servlet-name> <url-pattern>/*</url-pattern>
> </servlet-mapping>
> This didn't get a response on the user mailing list, so I'm presuming it's a
> legitimate bug.
> This worked in Tapestry 4.0b6, but broken when I upgraded to rc1.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]