自定义提升标签不起作用

时间:2011-12-18 15:46:52

标签: eclipse scala openid lift sbt

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:环绕声等都能正常工作。

1 个答案:

答案 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登录页面,所以它确实有用。

来源: