Как скрыть поле в редактируемом режиме в приложении Grails, используя файл .gsp? - PullRequest
0 голосов
/ 21 апреля 2020

В моем приложении есть ситуация, когда мне нужно скрыть поле в одном редактируемом режиме, но быть видимым и редактируемым в другом редактируемом режиме. Например, у меня есть ownerEdit, где он отображает файл _userid.gsp, и все поля в _userid.gsp доступны для редактирования. В то же время я пытаюсь отобразить файл _userid.gsp в режиме userEdit, где мне нужно полностью скрыть некоторые поля.

Любые предложения приветствуются. Вот примеры кодов: у меня есть ownerdataEdit.gsp, который называется call в ownerEdit.gsp. _OwnerDataEdit.gsp действительно вызывает _userid.gsp как

<g:render template = "userid" model="${[userEditable:!ownerView.equals('show')]}"/>

Аналогично, userDataEdit.gsp также вызывает _userid.gsp как

 <g:render template = "userid" model="${[userEditable:userEdit]}"/>

И, наконец, _userid.gsp имеет коды для поле пароля, которое я хочу скрыть. И чтобы сделать это, я использовал оператор if

<g:if test="${[userEdit:true]}"><dt input type="hidden"</dt></g:if>
<g:else>render the field </g:else>

. По какой-то причине он не читает g: if условие.

1 Ответ

0 голосов
/ 21 апреля 2020

Вам нужно будет пройти режим в модели рендеринга:

render(template: "userid", model: [editable: true])

Тогда у вас есть несколько вариантов.

Вы можете выбрать тривиальный маршрут и использовать style='display: none' в полях, когда редактируемый это правда. Это дает дополнительное преимущество, заключающееся в том, что вы можете легко переключаться между редактируемым и не на стороне клиента, если это имеет для вас значение.

Вы можете использовать поля <input type='hidden' ... />, если вам нужны значения, чтобы перейти к любой отправке. , Обратите внимание, что они по-прежнему могут быть отредактированы пользователем, который знает, как использовать консоль разработчика, поэтому вам необходимо иметь средства защиты на стороне сервера и для предотвращения злонамеренного редактирования.

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

Дополнительная информация:

Измените условия if с:

<g:if test="${[userEdit:true]}"><dt input type="hidden"</dt></g:if>

до:

<g:if test="${userEditable}"><dt input type="hidden"</dt></g:if>
...