2016-11-08 49 views
0

我的域類簡化這個樣子的:限制選擇對某些域類項目

class ScheduleTimeExp{ 
    Data date 
} 

class ScheduleAction{ 
    ScheduleTimeExp scheduleTimeExp 
} 

我在GSP一個選擇框:

<g:select id="scheduleTimeExp" name="scheduleTimeExp.id" from="${tao.marketing.ScheduleTimeExp.list()}" optionKey="id" required="" value="${tao.marketing.ScheduleAction?.scheduleTimeExp?.id}" class="many-to-one"/> 

寧可讓用戶從各個ScheduleTimeExp選擇

from="${tao.marketing.ScheduleTimeExp.list()}" 

我想只顯示那些ScheduleTimeExp其中Schedule TimeExp和ScheduleAction不存在任何其他ScheduleAction。換句話說,只有那些尚未在另一個ScheduleAction中選擇的時間表達式。

+0

您可能希望包含域類以提供更高質量答案的機會。 –

+0

是'ScheduleTimeExp'和'ScheduleAction'之間的關聯1:1還是n:1? – injecteer

+0

在你的控制器中,你應該從服務中獲得所需的數據併發送給gsp作爲參數列表 –

回答

0

從表現分離執行邏輯,要填充控制器動作裏面名單:

def dataSource 

def someAction() { 
    final Sql sql = new Sql(dataSource) 
    def scheduleTimeExps = sql.rows('select ste.id, ste.date from Schedule_Time_Exp ste where ste.id not in (select sa.Schedule_Time_Exp_id from Schedule_Action sa)').collect{ it as ScheduleTimeExp } 
    [ ..., scheduleTimeExps:scheduleTimeExps ] 
} 

注:確保表的情況下,並命名和列是正確

,然後在gsp:

<g:select .. from="${scheduleTimeExps}"/>