找不到匹配的构造函数:DomainObjectName(java.lang.String)

时间:2015-10-26 22:13:33

标签: grails

我正在使用命令对象,我在命令对象中使用了一个域对象,如下所示。

class JobCommand {
  List<Country> countries
  String name
  String age
  .....
}

国家域名如下:

@EqualsAndHashCode(includes="id")
class Country{
String id
String name
Date createDate
......
}

我从JobController访问此jobCommand对象,也在我的gsp页面中访问我的Country字段中的值。 我在我的gsp页面中有一个名为Country的搜索字段,它有美国,印度,伊朗等国家的选项。

 <g:select name="countries" id="country" 
        from="${Country.findAll()}"
        value="${jobCommand ?.countries}"
        multiple="true" 
        optionKey="id"
        optionValue="name"
 />

当我选择多个国家/地区,然后点击搜索按钮时,我收到异常“无法找到匹配的构造函数:package.Country(java.lang.String)”。

1 个答案:

答案 0 :(得分:1)

将Params绑定到Command对象有两种方法。 1.使用bindData(http://docs.grails.org/3.1.1/ref/Controllers/bindData.html) 2.编写我们自己的转换器。我有同样的问题,我编写了自己的转换器。

编写自己的转换器的步骤: 使用以下方法创建转换器类:

boolean canConvert(value) {
        value instanceof String
    }

    def convert(value) {
        //your logic
    }

    Class<?> getTargetType() {
        //your type
    }

将注册表转换为resources.groovy in bean {}