2014-11-03 114 views
0

我已經域類以下什麼是創建標準過濾器的最佳方式?

class Something { 
    User user 
    BigDecimal balance 
    Boolean cancelled 
    String status 
    Client client 
    Date dateCreated 
    Date lastUpdated 

    static constraints { ... } 

    ... 
} 

我需要創建一個過濾器,這個領域類的UI看起來像這樣

enter image description here

我不知道如何創建此過濾器的所有其標準是可選的,所以我需要你的建議是什麼是創建標準過濾器的最佳方式?

感謝

+2

您可以使用多個'if'基於相應元素的可用性標準查詢中塊? – dmahapatro 2014-11-03 23:22:59

+0

我不知道我可以在條件內使用ifs。這有助於很多 – user615274 2014-11-04 14:04:15

回答

1

我會做這樣的

List<Something filter(Client client, String status, BigDecimal balance) (
    Something.withCriteria { 

    if (client) { 
     eq 'client', client 
    }  

    if (status) { 
     eq 'status', status 
    }  

    if (balance != null) { 
     eq 'balance', balance 
    }  

    // other predicates go here.... 
    } 
} 
+2

寫入的方式,請注意與Groovy真相有關的意外行爲。例如,如果「餘額」爲1,則會執行「餘額」,「餘額」標準,但如果「餘額」爲0,則不會。如果你的意圖是要查詢所有具有「平衡」爲0的'Something',那麼這個代碼將不起作用。 – 2014-11-04 03:39:46

+0

@JeffScottBrown謝謝,我已更新代碼以避免此問題 – 2014-11-04 15:25:50

相關問題