如何动态设置电梯片段的参数?

时间:2012-07-24 04:55:47

标签: scala lift

有没有办法可以动态修改代码段的参数?

E.g。如果我称这个网址

host:port/a_page?name=myname

我希望我的页面看起来像这样:

<div class="lift:surround?with=default;at=content">
   <div class="lift:comet?type=MySnippet;name=myname" >
      ...
   </div>
</div>

这甚至可能吗?我尝试使用一些javascript来从url中提取param并将其放在class的{​​{1}}属性中,但在我的理解中,这将无效,因为脚本将始终在提升框架后执行这真是太神奇了。

提前致谢!任何帮助都非常感谢。


我使用了提供的两个提示来使其工作,就像ajantis提到直接从片段中读取参数是最简单的方法但在彗星呼叫中不起作用。 Rogach解决方案有效。

所以解决方案是:

div

2 个答案:

答案 0 :(得分:3)

为什么不直接在片段处理中提取http参数?即。

def render = {
   val name = S.param("name").openOr("...")
....
}

答案 1 :(得分:2)

您可以尝试将该彗星片段包装在其他片段中,该片段会转换xml并将name=myname添加到class。像:

<div class="lift:Ex.wrap">
  <div class="lift:comet?type=MySnippet"></div>
</div>

class Ex {
  def wrap = { (n: NodeSeq) =>
    // example transformation
    // AntiXML syntax
    import com.codecommit.antixml._;
    val comet = n \ "div" head;
    val comet2 = 
      comet.copy(attrs = comet.attrs +
                         ("class" -> (comet.attrs("class") + ";name=myname")))
    n \ "div" updated (0, comet2) unselect
  }
 }