获取错误“没有方法的签名适用于参数类型:( com.vproc.market.SubCategory)”in grails

时间:2013-11-05 13:34:40

标签: grails

我正在尝试向组织添加类别和子类别(当前登录用户)。我可以添加类别但无法将子类别添加到组织。当我尝试时,得到以下消息:

No signature of method: com.vproc.market.Follower.addToSubCategories() is applicable for argument types: (com.vproc.market.SubCategory) values: [com.vproc.market.SubCategory : 4]. 

我尝试在下面的组织控制器的跟随方法中向组织添加类别和子类别。

OrganizationController.groovy

   def follow() {
      Subscriber loggedinSubscriber = subscriberService.getLoggedinSubscriber()
      Party organization = loggedinSubscriber?.customer?.party
      def marketInstance = Category.get(params.abc)
      def follower = new Follower()
      follower.followedBy = organization
      follower.category = marketInstance
      def sub = params.list('subcategories')
      sub.each { id ->
      follower.addToSubCategories(SubCategory.get(id))
      }
      follower.save(failOnError: true);
      flash.msg = "Okay. This market is now on your watchlist."
      redirect (action: "profile")
    }

在这种方法中,我在以下行中收到错误:

follower.addToSubCategories(SubCategory.get(id))

在问题标题中提及。

Organization.groovy

package com.vproc.member

import java.util.Date;
import com.vproc.market.SubCategory;

class Organization extends Party{

    String orgName
    Person contact
    String orgSize
    boolean isVendor  = false

  static hasMany = [follows: SubCategory]

  static constraints = {
    orgName blank: false
    orgSize blank: false
  }
}

Follower.groovy

package com.vproc.market
import com.vproc.member.Organization;

class Follower {

    Category category
    Organization followedBy
  SubCategory subCategory
  static constraints = {
    }
}

关注者是将类别和子类别添加到组织并存储的域。

Category.groovy

package com.vproc.market

import com.vproc.enquiry.Enquiry;

class Category {

    String name
    String description
    static constraints = {
    }
    static hasMany = [ subCategories: SubCategory ]
}

SubCategory.groovy

package com.vproc.market

import com.vproc.enquiry.Enquiry;

class SubCategory {
    String name 

    static hasMany = [requirements: Enquiry]
    static belongsTo = [ category: Category]
    static constraints = {
        requirements nullable:true
    }
}

gsp文件

<g:form  controller="organization" params="[temp : marketInstance?.id]" action="follow" method="post">
                <g:hiddenField  name= "abc" value="${marketInstance?.id}"  />
                <g:hiddenField name="id" value="${subcategory?.id}" />
                  <div style="margin-left:200px">
                    <input type="button" class="button-inner" id="check1" value="Check All" />
                    <input type="hidden" id="isChkd" value="true" />
                    <g:each var="subcategory" in="${subCategroyInstanceList}">
                    <div>
                    <g:checkBox class="cb1-element" name="subcategories" value="${subcategory.id}"/>
                    <label for="subcategories"> ${subcategory.name}</label>
                    </div>
                  </g:each>
                  <button class="btn btn-inverse">Submit</button>
                </div>
              </g:form>

摘要:我想向组织添加类别和子类别。我可以成功添加类别,但未能将子类别提交给组织。

以下行发生错误:

def sub = params.list('subcategories')
      sub.each { id ->
      follower.addToSubCategories(SubCategory.get(id))
      }

没有方法签名:com.vproc.market.Follower.addToSubCategories()适用于参数类型:

2 个答案:

答案 0 :(得分:2)

只需快速查看您的域名,关注者域名与SubCategory直接关联。您只需将subCategoty指定为不需要follower.addToSubCategories(SubCategory.get(id))

即可

可能是这样的:

follower.subCategory = SubCategory.get(id)

答案 1 :(得分:0)

我目前正在研究Grails,也发现了类似的问题。我使用的是Grails 2.3.7,我找到了这个https://github.com/grails/grails-datastore-test-support/issues/1

即使从这个链接,它提到它是一个错误,但我仍然不太确定。到目前为止,我只是按照以下方式执行,它对我有用:

if(follower.subCategories == null){
    follower.subCategories = [] 
}
def sub = params.list('subcategories')
  sub.each { id ->
  follower.subCategories.add(SubCategory.get(id))
}

如果您有更好的解决方案,请告诉我。我也很想知道。