Details
Description
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.