如何使用.gsp文件在grails应用程序中以可编辑模式隐藏字段?

如何使用.gsp文件在grails应用程序中以可编辑模式隐藏字段?,grails,groovy,gsp,Grails,Groovy,Gsp,在我的应用程序中,我需要在一种可编辑模式下隐藏一个字段,但在另一种可编辑模式下该字段是可见的和可编辑的。例如,我有ownerEdit,它在其中呈现文件_userid.gsp,_userid.gsp中的所有字段都是可编辑的。同时,我正试图在userEdit模式下呈现_userid.gsp文件,其中需要完全隐藏一些字段 欢迎提出任何建议。以下是示例代码: 我有ownerdataEdit.gsp,它是在ownerEdit.gsp中调用的。_ownerDataEdit.gsp确实将_userid.gsp

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

欢迎提出任何建议。以下是示例代码: 我有ownerdataEdit.gsp,它是在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>

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

render(template: "userid", model: [editable: true])
那么你有一些选择

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

如果需要将值传递到任何提交,可以使用
字段。请注意,知道如何使用开发人员控制台的用户仍然可以编辑这些内容,因此您需要在服务器端设置保护,以防止恶意编辑

如果不在可编辑模式下,不需要渲染字段,则根本无法渲染字段

其他信息:

将您的if条件更改为:

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

谢谢。也许我没领会你的意思。我在两个地方使用_userid.gsp。一个在所有者编辑按钮中,另一个在用户编辑按钮中。因此,用户编辑模式仅适用于那些不应更改字段中任何内容(如用户名和密码)的用户。事实上,对于用户编辑模式,我想隐藏密码字段(我可以在显示时使其不可编辑,但我想隐藏它)。对,所以在渲染时传入一个变量(称为“可编辑”或任何您想要的),指示您是否希望字段可编辑。然后在gsp上使用该标志(通过g:if或${editable})适当地显示内容。即使在“显示”视图中也会丢失该字段,或者该字段在“用户编辑”中以可编辑模式显示。您需要显示一些代码才能获得更详细的帮助。我建议至少显示控制器的渲染线,以及两个GSP。如果这能澄清我的问题,请添加一些示例代码。
<g:if test="${userEditable}"><dt input type="hidden"</dt></g:if>