默认情况下,Seaside会将example.com/myapp
指向myapp
处注册的任何应用程序。我想要一个核心应用程序,它也可以处理这些链接,或者处理这些链接的其他方式。
到目前为止,我有一个home
应用程序,它也被注册为默认应用程序,因此http://mydomain.com
将解析它,但如果我生成一个链接,如http://mydomain.com/more-info
,Seaside尝试解析在more-info
注册的应用程序。如果我希望我的home
应用程序处理链接怎么办?或者以其他方式处理它?</ p>
我正在使用Apache托管Seaside,因此我可以使用Apache的URL重写引擎将http://mydomain.com/more-info
重写为http://mydomain.com/home/more-info
,这将由我的home
应用处理。
有更好的方法吗?此外,如果存在对Seaside请求/响应生命周期的解释的链接,那就很好。
答案 0 :(得分:4)
您尝试做的不是Seaside应用程序中的常见做法。如果要在应用程序中生成从一个页面到另一个页面的链接,通常使用附加到锚点的回调:
html anchor callback: [ self call: moreInfoComponent]
在这种情况下,您不关心网址的外观,而Seaside会为您生成网址。这样生成的URL永远不会有嵌套结构,但使用参数。
有关海边请求/响应周期的更多信息,请参见online book(章节“基础知识”和“测序组件”)。
但是,如果你确实想拥有这样一个嵌套的url(使url可以收藏),那么有不同的方法,具体取决于你实际想要实现的目标。您可以查看处理过期会话的方法(在书中)或Seaside-REST package。
顺便说一句,url到应用程序的映射是通过WADispatcher的(实例)进行的。如果检查以下表达式的结果,则可以看到Seaside的调度程序树。它可以通过添加新的应用程序,调度程序等完全自定义......
WAAdmin defaultServerManager adaptors first requestHandler
希望这可以帮助你...