Yes. I do it in many webapps. AppModule:
@Contribute(PageRenderLinkTransformer.class) @Primary public static void provideURLRewriting(final OrderedConfiguration<PageRenderLinkTransformer> configuration) { configuration.addInstance( “MyLinkTransformer", MyLinkTransformer.class); } For simple pages (without context), I have a utility class with logicalPage name and the names into various languages (Spanish and English in the example) for better SEO on each language: private class PageLinkTransFormer { private final String logical; private final String linkEs; private final String linkEn; public PageLinkTransFormer(final String logical, final String linkEs, final String linkEn) { super(); this.logical = logical; this.linkEs = linkEs; this.linkEn = linkEn; } public String getLogical() { return logical; } public String getLinkEs() { return linkEs; } public String getLinkEn() { return linkEn; } } And the MyLinkTransformer Service (in the example, I have the pages DevolucionesPage, AvisoLegalPage and SizeGuidePage): public class MyLinkTransformer implements PageRenderLinkTransformer { private static final String DEVOLUCIONES_LOGICAL_PAGE_NAME = "Devoluciones"; private static final String DEVOLUCIONES_PAGE_URL_ES = "/envios-devoluciones-cuidados"; private static final String DEVOLUCIONES_PAGE_URL_EN = "/delivery-return-cares"; private static final String AVISO_LEGAL_LOGICAL_PAGE_NAME = "AvisoLegal"; private static final String AVISO_LEGAL_PAGE_URL_ES = "/aviso-legal"; private static final String AVISO_LEGAL_PAGE_URL_EN = "/disclaimer"; private static final String SIZE_GUIDE_LOGICAL_PAGE_NAME = "SizeGuide"; private static final String SIZE_GUIDE_PAGE_URL_ES = "/guia-tallas"; private static final String SIZE_GUIDE_PAGE_URL_EN = "/size-guide"; private final List<PageLinkTransFormer> links; @Inject private PageRenderLinkSource pageRenderLinkSource; @Inject private ContextValueEncoder contextValueEncoder; @Inject private ThreadLocale threadLocale; @Inject private PersistentLocale persistentLocale; public MyLinkTransformer() { links = new ArrayList<MyLinkTransformer.PageLinkTransFormer>(); links.add(new PageLinkTransFormer( DEVOLUCIONES_LOGICAL_PAGE_NAME, DEVOLUCIONES_PAGE_URL_ES, DEVOLUCIONES_PAGE_URL_EN)); links.add(new PageLinkTransFormer( AVISO_LEGAL_LOGICAL_PAGE_NAME, AVISO_LEGAL_PAGE_URL_ES, AVISO_LEGAL_PAGE_URL_EN)); links.add(new PageLinkTransFormer( SIZE_GUIDE_LOGICAL_PAGE_NAME, SIZE_GUIDE_PAGE_URL_ES, SIZE_GUIDE_PAGE_URL_EN)); } @Override public Link transformPageRenderLink(final Link defaultLink, final PageRenderRequestParameters parameters) { LOGGER.trace("transformPageRenderLink {} ({})", parameters.getLogicalPageName(), defaultLink.toAbsoluteURI()); final String locale = threadLocale.getLocale().toString(); for (final PageLinkTransFormer link : links) { if (link.getLogical().equals(parameters.getLogicalPageName())) { if ("es".equals(locale)) { return defaultLink.copyWithBasePath(link.getLinkEs()); } else { return defaultLink.copyWithBasePath(link.getLinkEn()); } } } return null; } @Override public PageRenderRequestParameters decodePageRenderRequest(final Request request) { String requestPath = request.getPath(); if (persistentLocale.isSet()) { requestPath = requestPath.substring(3); } for (final PageLinkTransFormer link : links) { if (requestPath.equals(link.getLinkEn()) || requestPath.equals(link.getLinkEs())) { return new PageRenderRequestParameters(link.getLogical(), new EmptyEventContext(), false); } } return null; } With context is simple to do it. I hope help you. Regards Carlos Montero > El 2/5/2016, a las 11:51, Stephen Nutbrown <steves...@gmail.com> escribió: > > Hi, > > I am working on a tapestry project and someone has asked me to change the > URLs to include hyphens which they believe will improve SEO. > > As per https://support.google.com/webmasters/answer/76329?hl=en, it's > supposedly good practise to "Consider using punctuation in your URLs. The > URL *http://www.example.com/green-dress.html > <http://www.example.com/green-dress.html>* is much more useful to us > than *http://www.example.com/greendress.html > <http://www.example.com/greendress.html>*. We recommend that you use > hyphens (-) instead of underscores (_) in your URLs." > > So, let's say I have a page called: GreenDress, which has a GreenDress.java > and a GreenDress.tml. > > Is there any way I can change that to "Green-Dress"? I'm not sure a hyphen > is even a valid character in a Java class name, so I assume there is > another way to do it? > > Thanks, > Steve