замените тег ‹f:all /› обычными полями в пользовательском шаблоне Grails

я устанавливаю шаблоны в grails 3, а файлы находятся в src/main/templates/scaffoldind работает нормально, но использует тег

<f:all bean="${propertyName}"/> 

Мне нужен класс twitter bootsrap для всех входов, а тег f: all не разрешает эту функцию, поэтому мне нужно заменить тег отдельными полями, например:

    <%
    props.each{
    %>
    <f:field bean="${propertyName}" property="${it.name}">
     <g:textField name="${it.name}" value="${propertyName}?.${it.name}" class="form-control" />
    </f:field>
...
    <%
    }
    %>

Я нашел эту статью http://www.jakusys.de/blog/2008/12/grails-scaffolding-in-depth/, но это для grails 2, а не для grails 3, какое-то решение для замены тега f:all для обычных входных данных или добавления класса "form-control" ко всем f: все входы


person Abel Olguin Chavez    schedule 06.12.2015    source источник
comment
Привет Смогли ли вы решить проблему. Не могли бы вы поделиться кодом, поскольку предложенный ниже подход, похоже, не работает для меня.   -  person Nikhil Mittal    schedule 12.01.2016


Ответы (2)


Если вы хотите, чтобы все поля, отображаемые с помощью <f:all />, выглядели красиво и загружались, вам нужно создать для них шаблоны _field.gsp.

Вы можете создать общие шаблоны (используемые для всех полей), создав эти четыре фрагмента gsp:

_wrapper.gsp
_widget.gsp
_displayWrapper.gsp
_displayWidget.gsp

в этом каталоге:

grails-app/views/_fields/default/

Затем вы можете заменить

<%
props.each{
%>
<f:field bean="${propertyName}" property="${it.name}">
 <g:textField name="${it.name}" value="${propertyName}?.${it.name}" class="form-control" />
</f:field>
...
<%
}
%>

бит в вашем скаффолдинге gsp с вызовом тега <f:all />.

См. документацию здесь

person rcgeorge23    schedule 07.12.2015
comment
Это работает, но я пытаюсь использовать. ‹f:field bean=${class (в соответствии со свойствами в документации)} property=${propertyName}› на _wrapper.gsp возвращает ошибку, вы можете привести пример кода? пожалуйста - person Abel Olguin Chavez; 07.12.2015
comment
Привет, rcgeorge23, я относительно новичок в Grails... Могу привести несколько примеров этих _wrapper.gsp, _widget.gsp, _displayWrapper.gsp, _displayWidget.gsp - person hemu; 27.02.2016
comment
Кроме того, если я создам этот общий шаблон gsp, а затем попытаюсь сгенерировать представление для класса домена, будет ли тег f: all присутствовать в сгенерированном редактировании и создании gsp? - person hemu; 27.02.2016
comment
где взять образец _displayWrapper.gsp? - person aldo; 20.10.2016

Это не работает для <f:display bean="${propertyName}" /> со мной, когда я пытался показать все свойства (без редактирования), поэтому вот что я сделал, чтобы все работало правильно, я создал два файла первый /views/_fields/default/_displayWidget.gsp с этим шаблоном:

<tr class="prop">
    <td valign="top" class="name">${label}</td>
    <td valign="top" class="value">${value}</td>
</tr>

и второй /views/templates/_fields/_list.gsp с использованием этого шаблона:

<g:each in="${domainProperties}" var="p">
    ${body(p)}
</g:each>

На самом деле я просто перезаписал исходный шаблон _list.gsp (я использую Grails v3.1).

person Ibrahim.H    schedule 14.09.2017