說我有一個Domain對象Teacher具有兩個字段String name,TeacherType teacherType,其中TeacherType是一個包含AssitantProfessor,AssociateProfessor,Professor的枚舉。如何有條件地禁用表單輸入字段
使用grails run-target generate-all Teacher生成視圖後,它會生成一個_form.gsp,用於創建和編輯Teacher。在編輯視圖中,我只希望名稱是可編輯的,但TeacherType一旦創建就不可修改(這只是一個示例,它是創建後無法更新某些字段的要求)。在創建視圖中,TeacherType和name都應該是可編輯的。
既然create.gsp和edit.gsp呈現_form模板,那麼這裏的首選方法是什麼?
- 創建兩個單獨的模板,即_formCreate.gsp,_formEdit.gsp;或
- 傳入create.gsp和edit.gsp中的模型映射,並在_form.gsp中使用它們以有條件地呈現視圖? 例如
在create.gsp:
<fieldset class="form">
<g:render template="form" model="[teacherInstance: teacherInstance, 'mode':'create']"/>
</fieldset>
在edit.gsp
<fieldset class="form">
<g:render template="form" model="[teacherInstance: teacherInstance, 'mode':'edit']"/>
</fieldset>
在_form.gsp
<g:if test="${mode == 'edit'}">
<g:select name="teacherType" from="${TeacherType?.values()}" keys="${TeacherType.values()*.name()}" required="" value="${teacherInstance?.teacherType?.name()}" disabled="disabled"/>
</g:if>
<g:else>
<g:select name="teacherType" from="${TeacherType?.values()}" keys="${TeacherType.values()*.name()}" required="" value="${teacherInstance?.teacherType?.name()}" disabled="false"/>
</g:else>
方法二的作品,但我想,如果數量條件語句增加它可能只是更好地遵循方法1和分裂表格。
是否有另一種我不知道的方法?
很酷,我會試試看。它確實看起來更好,因爲它消除了有條件的標籤 –
vsnyc
2013-02-13 05:40:57