2015-10-26 80 views
0

我正在使用命令對象,並在命令對象內使用了一個域對象,如下所示。找不到匹配的構造函數:DomainObjectName(java.lang.String)

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

國家域名如下:

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

我從我的JobController訪問該jobCommand對象並以我GSP頁面設置在我的國家字段的值。 我有我的GSP頁面命名爲國家搜索領域,它有像,美國,印度,伊朗等國家的選項

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

當我選擇多個國家,並點擊搜索按鈕,我得到的異常「找不到匹配的構造函數:package.Country(java.lang.String)「。

+0

爲什麼G:名爲*國家選擇標記*但命令對象屬性被命名爲*國家*? –

+0

嗨羅莎,謝謝你的評論。其實你是對的。這是我的打字錯誤。 g:選擇標籤名稱僅爲「國家」。我糾正了這個問題。 – Ryan

+0

很明顯,構造函數丟失。但是,哪一行代碼會拋出異常? –

回答

1

有兩種方法將命令綁定到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內豆{}

相關問題