Lift中的以下类型的标签似乎对我不起作用:
<lift:snippet type="MyClass:render" />
<lift:MyClass.render/>
<lift:MyClass/>
使用这些标记会导致“找不到类”错误。如果我尝试使用
调用一个类<div class=lift:myclass.mymethod />
它可以工作。或者如果我使用span标签调用它。例如,Pollak的 Simply Lift 中的Hello World示例适用于我,使用以下代码成功显示Howdy方法:
<span class="lift:helloWorld.howdy">
Welcome to your Lift app at <span id="time">Time goes here</span>
</span>
目前,我的问题来自于尝试在第13.1章中实现 Exploring Lift (又名 The Lift Book )OpenID示例。我已经使用sbt以及lift-openid库下载了OpenID4Java。该示例可在http://exploring.liftweb.net/master/index-13.html找到。我已经对Boot类实现了更改,并创建了OpenID类和SimpleOpenIDVendor类。但是创建一个包含
的html文件 <lift:OpenID.form>
<openId:renderForm/>
</lift:OpenID.form>
导致以下错误显示在浏览器中:
Error processing snippet: openid.form
Reason: Class Not Found
XML causing this error:
<lift:openid.form xmlns="http://www.w3.org/1999/xhtml">
<openid:renderform>
</openid:renderform></lift:openid.form>
类OpenID放在一个以包代码开头的包中,这是由Lift隐式找到的。它包含在带有
行的Boot.scala文件中LiftRules.addToPackages("code")
所以,我很茫然。有什么想法吗?
请注意,其他升降标签,例如lift:bind-at和lift:环绕声等都能正常工作。
答案 0 :(得分:2)
正如dave在我原来的评论中发布的那样,问题是HTML5解析器。 Lift区分大小写,无法找到具有不同大小写的类。由于HTML5解析器会自动将标记设置为小写,因此您无法再使用自定义提升标记。相反,你必须使用像
这样的东西<div class="Lift:MyClass.render"></div>
请注意,不能
<div class="Lift:MyClass.render" />
因为HTML5显然不支持此类标记。
因此使用以下方法解决了我的OpenID4Java问题:
<div class="lift:OpenID.renderForm">
</div>
为什么我不需要使用openid.form仍然不确定。有可能我稍微实现它,但我确认如果我放入openid链接,它将带我进入openid登录页面,所以它确实有用。
来源: