Плагин Grails Поля - PullRequest
       21

Плагин Grails Поля

0 голосов
/ 10 февраля 2019

grails v 3.3.9, плагин fields

борется с полями plgin и возникает проблема при рендеринге доменных объектов и использовании начальной загрузки

Я получил пример с простой автономной страницычтобы показать проблему

<p>f:display category </p>
<f:display bean="maintenanceAgreement" >

</f:display>

<hr />

<p>f:field category</p>
<f:field bean="${this.pageScope.maintenanceAgreement}" property="category">
    <g:render template="/_fields/map/displayWidget" ></g:render>
    </f:field>

<hr />

по сути, я добавил шаблон в "/ _fields / map / displayWidget", который отображает таблицу справа на кнопке

при рендеринге поля картынепосредственно из вашего объекта Domain открывается пример таблицы, и вы получаете всю таблицу

, однако, когда вы

, вы можете увидеть различия между использованием f.display (есть проблема с отсечкой), f.field (что кажетсяработать) и f.all, который игнорирует мои _fields / map / _displayWidget.gsp

Я не хочу, чтобы не использовался плагин fields, но он не работает с шаблонами начальной загрузки

есть кто-нибудьс решением этой проблемы?

демонстрационная страница проекта находится здесь автономная страница github для отображения проблемы с рендерингом

в прикрепленном файле показан вашtput при каждой попытке выбрать свойство категории

enter image description here

1 Ответ

0 голосов
/ 14 февраля 2019

хорошо, goldarn это еще 2 дня вниз по сковороде - но у меня это есть!

Сначала я подумал, что это как-то связано с обработкой плагина полей.поэтому я взломал клон проекта плагина локально и добавил несколько битов, чтобы я мог наблюдать его / шаг отладки через него

, при этом я заметил, что моя фиктивная страница класса веб-домена, которую я перерезал плагину, неесть проблема отсечения.но стили не были одинаковыми, поэтому я скопировал main.css и grails.css из обычного проекта обратно в плагин, а затем снова отобразил в браузере - и отсечение снова произошло.

, так что это в css!,Некоторое очень тщательное наблюдение за браузером и просмотр его в браузере показал, что отсечение, казалось, было включено очень рано в путешествии.

, поэтому на своей фиктивной странице я просто использовал

Затем я провелдень блуждает вокруг плагинов различных битов полей, так как это не так хорошо объяснил нигде.

, если вы посмотрите на метод отображения taglib плагинов, по умолчанию это вызывает /templates/fields/_list.gsp.присвоение имен немного странно, но это gsp, который отображает постоянные атрибуты доменов в виде упорядоченного списка - плагины по умолчанию _list.gsp выглядят так:

<ol class="property-list ${domainClass.decapitalizedName}">
    <g:each in="${domainProperties}" var="p">
        <li class="fieldcontain">
            <span id="${p.name}-label" class="property-label"><g:message code="${domainClass.decapitalizedName}.${p.name}.label" default="${p.defaultLabel}" /></span>
            <div class="property-value" aria-labelledby="${p.name}-label">${body(p)}</div>
        </li>
    </g:each>
</ol>

, поэтому после долгих поисков по шаблонам, снизуЯ оказался прямо наверху с '

, так что почти сейчас.обратно в main.css, который я скопировал. если вы отредактируете это, вниз по строке 215 вы получите этот стиль.Если вы закомментируете свойство переполнения - все исправлено!

.property-list .fieldcontain {
    list-style: none;
    /*overflow: hidden; */

    zoom: 1;
}

Я пробовал авто, прокручивать и отображать, но это слишком много для слишком большой части страницы, поэтому лучше просто закомментировать ее.

как только вы это сделаете - остальная часть рендеринга ваших форм начнет работать !!одна линия CSS для всей этой боли.Прилагается страница с использованием

enter image description here

Наконец, через все это, id заканчивал тем, что копал плагин / трассировку полей.Что это за гнездо.Не совсем законченный здесь, но в основном

без тела просто отображает метку и без содержимого.Таким образом, вам либо нужно предоставить тег body, скажем, чтобы отображалось поле значения.

как

, если шаблон виджета не был определен, то вызывается renderDefaultDisplay, который опять-таки имеет очень ограниченные возможности для управления рендерингом, проходя через «switch (prop.type)», и в основном вызываетлибо g.format (bool), g.formatDate (но без поддержки LocalDateTime / LocalDate) или g.fieldValue, для которых не включена поддержка начальной загрузки.

, если вы вызываете

, эти две диаграммы не красивые, нопросто псевдокод высокого уровня, чтобы пройти через то, что пытаются сделать основные теги.Однажды я попробую это сделать, но это может помочь вам, если вы застряли

Я сообщу об ошибке для вырезки из main.css непосредственно команде Grails и посмотрю, что произойдет, но вы можетезакомментируйте строку самостоятельно, если вы ее оскорбляете.

enter image description here

enter image description here

...