So, I've been having great fun with the SmartURLs plugin, and, well, I have some notes :)
I'd be happy to open issues for each of these on the Google Code site, but I thought it might be fun to bunch them together for the group. * Is SEO "Search Engine Optimization"? What makes hello-action more compliant than HelloAction? * Would it be possible to support ReST-style parameters (which I believe are also SEO-preferred), so that "hello-world/save?message=Howdy" could be expressed "hello-world/save/message/Howdy". ** Something like "hello-world/save/+/message/Howdy" might work as well, if including a parameter-start flag would simplify the code. (It might simplify things for the developer too!) * Should we look for .html after .jsp, .ftl, .vm? Is the extension list configurable? * Should we also look a page named for the result type in the current namespace and the default namespace (/foo/hello-error.jsp, /foo/error.jsp, /error.jsp, and then fall back to /foo/hello.jsp)? ** A key use for "global" result-code pages might be login. ** A side-effect would be that a page should probably NOT be named "success.jsp" :) But, in my experience, when it comes to result pages, success is local and failure is global. * If we branch to another ${result} page, should we look for a ${result} action, and automatically chain the actions? * Could there be a smarturls.base.action.package that automatically incorporated "sub" packages. Right now, it seems that we need to list each and every package. ** smarturls.action.base.packages = "content" *** automatically includes content, content.foo, content.bar, ... * Using "" for a the base.result.location exposes an exception. SEVERE: Exception starting filter struts2 java.lang.IllegalArgumentException: Unable to make a URL at net.java.lang.URLClassLoaderResolver.prepare(URLClassLoaderResolver.java:96) at net.java.lang.URLClassLoaderResolver.prepare(URLClassLoaderResolver.java:39) at net.java.lang.AbstractClassLoaderResolver.addIfMatching(AbstractClassLoaderResolver.java:261) at net.java.lang.AbstractClassLoaderResolver.loadResourcesInDirectory(AbstractClassLoaderResolver.java:199) at net.java.lang.AbstractClassLoaderResolver.findInDirectory(AbstractClassLoaderResolver.java:162) at net.java.lang.AbstractClassLoaderResolver.find(AbstractClassLoaderResolver.java:103) at org.texturemedia.smarturls.DefaultResultMapBuilder.createFromResources(DefaultResultMapBuilder.java:229) at org.texturemedia.smarturls.DefaultResultMapBuilder.build(DefaultResultMapBuilder.java:183) at org.texturemedia.smarturls.PackageBasedActionConfigBuilder.createActionConfig(PackageBasedActionConfigBuilder.java:307) at org.texturemedia.smarturls.PackageBasedActionConfigBuilder.buildActionConfigs(PackageBasedActionConfigBuilder.java:203) at org.texturemedia.smarturls.SmartURLsConfigurationProvider.loadPackages(SmartURLsConfigurationProvider.java:92) at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:152) at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52) at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:395) at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:452) at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:201) at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:223) at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:304) at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:77) at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3634) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4217) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013) at org.apache.catalina.core.StandardHost.start(StandardHost.java:718) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442) at org.apache.catalina.core.StandardService.start(StandardService.java:450) at org.apache.catalina.core.StandardServer.start(StandardServer.java:709) at org.apache.catalina.startup.Catalina.start(Catalina.java:551) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432) Caused by: java.net.MalformedURLException: no protocol: /struts.xml at java.net.URL.<init>(Unknown Source) at java.net.URL.<init>(Unknown Source) at java.net.URL.<init>(Unknown Source) at net.java.lang.URLClassLoaderResolver.prepare(URLClassLoaderResolver.java:94) ... 33 more ----- -Ted. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]