如何在Lift - Scala中创建代码片段

4
我需要做的是将一个标签放入HTML页面中:

<lift:surround with="default" at="content"> 

<span class="lift:WorkingStatus.print"></span> 

</lift:surround> 

需要在适当的snippet.*包中设立一个片段类:

class WorkingStatus {

  def print():String={return "<table></table>";}

  def speak = <span>Hello World</span>

  def render = "* *" #> "Hello there in span"
} 

这个函数将生成一些html表格字符串,可以在html中显示,比如像 def print()

所以,这是一些比较琐碎的事情,在任何情况下我都无法做到。我需要一个Scala类,可以被整合到html页面中的任何位置,例如 - 让我们说 - 用 <jsp:include>,并且该类应该能够连接外部web服务,获取某些数据列表并生成html,然后将其插入到所需的位置... 够复杂了吧? :)


2
所以等等,你是说上面的代码根本不起作用吗?print()应该是什么?render函数是将内容放入span中的函数,它与speak或print无关。你的问题非常不清楚。 - Antonio Salazar Cardozo
我希望这段代码能够运行,之后我可以继续完善它,只是现在它无法正常工作。是的,我知道如果我什么特殊操作都不做,它会触发渲染函数。我故意留下了3个函数作为3种选择,所以你们可以告诉我哪种方法更好。欢迎任何建议...谢谢。 - ante.sabo
1个回答

1

您的print方法签名有误。Snippets的方法是NodeSeq => NodeSeq。 因此,更详细的变体是
def print(xhtml:NodeSeq):NodeSeq={return <table></table>;} 或者您可以使用

def print = "*" #> <table></table>

如果你需要某种转换,或者只是:

def print = <table></table>

我需要在print内部执行一些逻辑--->调用外部web服务,在某个“for循环”或其他东西中生成html,然后返回生成的html。我还得出结论,我需要那个NodeSeq类,但是这个类是无法实例化的(不能创建新的NodeSeq)。我也不太理解print =“* *”#> - 这两个星号代表什么? - ante.sabo
1
这个页面解释了通过CSS选择器进行绑定的转换。 - viktortnk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接