首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到Lift - Snippet失败方法

找不到Lift - Snippet失败方法
EN

Stack Overflow用户
提问于 2013-01-24 19:35:26
回答 1查看 1.1K关注 0票数 2

我已经将这个添加到了我的Boot.scala中

代码语言:javascript
复制
LiftRules.viewDispatch.append({
  case List("admin", "categories") => Right(Admin)
})

这是我的Admin.scala (管理/查看包)

代码语言:javascript
复制
object Admin extends LiftView{

  def dispatch = {
    case "add" => editCategory
  }

  def editCategory(): NodeSeq = {
    <lift:embed what="/admin/add_category"></lift:embed>
  }
}

这是我的add_category模板-

代码语言:javascript
复制
<lift:surround with="admin" at="content">
  <div class="container-fluid" id="main_container">
    <lift:Admin:addCategory form="POST" class="form-horizontal">
      <fieldset>
        <legend>Add Category</legend>
        <div class="control-group">
          <label class="control-label" for="cat_name">Name</label>
          <div class="controls">
            <cat:name></cat:name>
          </div>
        </div>
        <div class="control-group">
          <label class="control-label" for="cat_desc">Description</label>
          <div class="controls">
            <cat:desc></cat:desc>
            <cat:submit></cat:submit>
          </div>
        </div>
      </fieldset>
    </lift:Admin:addCategory>
  </div>
</lift:surround>

我正在尝试使用addCategory方法将它与(管理/片段包)中的片段-Admin.scala绑定在一起。

代码语言:javascript
复制
 object name extends RequestVar("")
  object desc extends RequestVar("")

  def addCategory(in: NodeSeq): NodeSeq = {
    def doAdd() {
      //todo: Save Category
    }

    bind("cat", in,
      "name" -> SHtml.text(name.is, (n: String) => name(n), ("id", "cat_name"), ("class", "input-large")),
      "desc" -> SHtml.textarea(desc.is, (d: String) => desc(d), ("id", "cat_desc"), ("class", "input-large")),
      "submit" -> SHtml.submit("Save", doAdd, ("class", "btn btn-info"))
    )
  }

我得到了这个错误-

代码语言:javascript
复制
Error processing snippet: admin:addcategory 
Reason: Method Not Found 
XML causing this error: 
 <lift:admin:addcategory class="form-horizontal" form="POST">
      <fieldset>
        <legend>Add Category</legend>
        <div class="control-group">
          <label for="cat_name" class="control-label">Name</label>
          <div class="controls">
            <cat:name></cat:name>
          </div>
        </div>
        <div class="control-group">
          <label for="cat_desc" class="control-label">Description</label>
          <div class="controls">
            <cat:desc></cat:desc>
            <cat:submit></cat:submit>
          </div>
        </div>
      </fieldset>
    </lift:admin:addcategory>

在日志里-

代码语言:javascript
复制
[net.liftweb.http.LiftRules] - Snippet Failure: SnippetFailure(/admin/categories/add -> ParsePath(List(admin, categories, add),,true,false),Full(admin:addcategory),Method Not Found)

我需要你的帮助。我不明白为什么lift找不到这个方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-24 21:23:43

你在LiftRules中添加你的admin包了吗?类似这样的东西应该允许Lift在admin.snippets中搜索解析:

代码语言:javascript
复制
LiftRules.addToPackages("admin")

此外,我认为您需要使用Admin.addCategory而不是:来调用代码片段。

编辑:

我相信Lift HTML5解析器是区分大小写的,并且在使用camel大小写方法名称时遇到了问题。您可能希望尝试将方法重命名为全小写,或者尝试将代码段调用为(而不是使用<lift:样式):

代码语言:javascript
复制
<div class="lift:admin.addCategory"> ... </div>

   or

<div data-lift="admin.addCategory"> ... </div>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14500430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档