Как скрыть поле в представлении скаффолдинга, но по-прежнему применять его при добавлении новой строки в Grails? - PullRequest
0 голосов
/ 10 января 2019

У меня есть простое приложение Grails, и я хотел бы скрыть некоторые столбцы в общем представлении скаффолдинга, запретить пользователю редактировать их, но при этом указать их при добавлении нового элемента. Я посмотрел на возможные ограничения, но, похоже, ни один из них не вполне соответствует требованиям:

  • column display: false скрывает столбец от вида, но скрывает его повсюду, включая новый вид добавления элемента
  • column editable: false не позволяет редактировать столбец в режиме редактирования, но вы не можете определить его при добавлении нового элемента (+ он вообще не скрыт) * ​​1008 *

Как мне тогда заняться этим? Я хотел бы по-прежнему иметь возможность использовать возможности динамического скаффолдинга, но, похоже, нет способа указать столбец, который не будет отображаться в общем виде, и все же применять его при добавлении чего-то нового. Есть ли способ указать, от какого вида скрывать его, вместо того, чтобы идти все или ничего?

1 Ответ

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

Допустим, у нас есть следующий домен:

class Thing {
    String userName
    String firstName
    Integer userId

    static constraints = {}
}

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

\views\thing\edit\userName

Затем добавьте файл с именем _widget.gsp в каталог выше со следующим содержимым ...

${value}

Который покажет текстовое значение только userName.

Что касается представления индекса, я не на 100%, если вы можете легко скрыть поле. Я знаю, что плагин fields будет отображать первые 7 полей в таблице в соответствии с порядком в определении класса домена. Таким образом, если у вас есть> 7 полей, вы можете дать то, которое вы хотите скрыть при заказе> 7, очевидно, что здесь есть огромные ограничения, у вас может даже не быть 8 полей, или вы можете захотеть скрыть более одного поля ...

Вы можете сделать то же самое для представления списка, но создать каталог с именем \views\thing\index\userName, а затем создать файл с именем _displayWidget.gsp, в котором ничего нет, или, возможно, какой-то текст, например «Скрытый», это все равно будет отображать столбец, но ничего не показывает в качестве значения или любого другого текста, который вы добавляете в файл, опять же не велик.

...