【问题标题】:How to hide a field in editable mode in grails application using .gsp file?如何使用 .gsp 文件在 grails 应用程序中以可编辑模式隐藏字段?
【发布时间】:2020-08-04 14:37:15
【问题描述】:

我的应用程序中遇到一种情况,我需要在一种可编辑模式下隐藏字段,但在另一种可编辑模式下是可见和可编辑的。例如,我有 ownerEdit,它在其中呈现文件 _userid.gsp 并且 _userid.gsp 中的所有字段都是可编辑的。同时,我试图在 userEdit 模式下渲染 _userid.gsp 文件,我需要完全隐藏一些字段。

欢迎提出任何建议。以下是示例代码: 我有在 ownerEdit.gsp 中调用的 ownerdataEdit.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 条件。

【问题讨论】:

    标签: grails groovy gsp


    【解决方案1】:

    您需要在渲染模型中传递模式:

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

    那么你有一些选择。

    当 editable 为 true 时,您可以采取简单的方法并在字段上使用 style='display: none'。这还有一个额外的好处,就是能够轻松地在可编辑和非客户端之间切换,如果这对您有价值的话。

    如果您需要将值传递给任何提交,您可以使用&lt;input type='hidden' ... /&gt; 字段。请注意,知道如何使用开发者控制台的用户仍然可以编辑这些内容,因此您还需要在服务器端设置保护措施以防止恶意编辑。

    如果您不需要它们做任何事情,当您不处于可编辑模式时,您根本无法渲染这些字段。

    附加信息:

    改变你的 if 条件:

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

    到:

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

    【讨论】:

    • 谢谢。也许我错过了你的观点。我在两个地方使用 _userid.gsp。一个在所有者编辑按钮中,另一个在用户编辑按钮中。因此,用户编辑模式仅适用于那些不应更改字段中任何内容(例如用户名和密码)的人。事实上,对于用户编辑模式,我想隐藏密码字段(我可以在显示时使其不可编辑,但我想隐藏它)。
    • 对,所以在渲染时传入一个变量(称其为“可编辑”或任何您想要的),指示您是否希望字段可编辑。然后在您的 gsp 上使用该标志(通过 g:if 或 ${editable})以适当地显示内容。
    • 不,没有用。要么在显示视图中丢失字段,要么在 userEdit 中以可编辑模式显示字段。
    • 您需要显示一些代码才能获得更详细的帮助。我建议至少显示来自控制器的渲染线,以及两个 gsps。
    • 添加了一些示例代码,如果这能澄清我的问题。
    猜你喜欢
    • 2017-02-02
    • 2013-04-07
    • 2016-11-07
    • 2016-03-30
    • 1970-01-01
    • 2016-03-03
    • 2014-03-12
    • 2011-09-04
    • 2011-07-06
    相关资源
    最近更新 更多