我正在使用命令对象,我在命令对象中使用了一个域对象,如下所示。
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)”。
答案 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 {}