如何更改Seaside中单个元素路径的处理方式?

时间:2011-02-19 01:07:52

标签: seaside

默认情况下,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请求/响应生命周期的解释的链接,那就很好。

1 个答案:

答案 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

希望这可以帮助你...