Grails 3"显示"使用Fields插件查看2.1.0-SNAPSHOT

时间:2016-05-03 09:53:21

标签: grails-3.1

坚持Grails 3.1.5中的一个小问题:显示域对象的字段,不包括其中一个,包括瞬态属性。是的,这是我以前版本多年后的第一个Grails 3项目。

生成的 show.gsp 包含

<f:display bean="rfaPdffile"/>

这将包含一个可能包含兆字节XML的字段。它永远不应该以交互方式显示。 <{1}}约束不再出现在文档中,似乎被忽略了。

接下来,我尝试明确命名字段:

display: false

这个版本令人惊讶地显示了没有任何标记的值。将显示更改为字段

<f:with bean="rfaPdffile">
  <f:display property='fileName'/>
  <f:display property='pageCount'/>
  ...
</f:with>

有点工作,但显示可编辑的值。 <f:with bean="rfaPdffile"> <f:field property='fileName'/> <f:field property='pageCount'/> ... </f:with> 也是如此。

此外,我尝试将其他属性添加到f:all属性(例如f:display),除外)(例如f:table })。我注意到,这两个属性在类似的目的上有不同的语法。

在Field插件文档中,我的用例被明确提及为设计目标。我一定错过了一些明显的东西。

我的目标是快速拼凑原型gui,将细节推迟到以后。非常感谢线索

3 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望将所有bean属性包含在gsp中,但是不应该向用户显示带有“兆字节XML”的bean属性? 如果是这种情况,你可以这样做:

f:with bean="beanName" 
f:field property="firstPropertyName"
f:field property="secondPropertyName"

你不希望展示的那个:

g:hiddenField name="propertyName" value="${beanName.propertyName?}"
f:with

因此,请将所有属性列为f:fieldf:display,并将您不想显示的属性放在g:hiddenField Grails标记中 您也可以尝试:

f:field property="propertyName" 
widget-hidden="true"

但在这种情况下不会隐藏Label。 希望它有所帮助

答案 1 :(得分:0)

我自己的回答:“使用武力,阅读来源”。 f:display标签有两个相当明显的错误。我会尽快提交拉取请求。

除了错误之外,文档没有提到插件可能会从域中获取“scaffold”静态属性(如果有的话)。它的价值应该是地图。其“排除”键可以定义要排除的属性名称列表(字符串列表)。这可能已经适用于“f:all”标签; “f:display”标签需要进行错误修正。

我的主观印象是,字段插件处于紧张状态。它与Grails架构交织在一起,使其对Grails内部的变化很敏感。标准脚手架插件也需要它,使其非常明显。因此,它需要维护者的不断关注,这是一个不被羡慕的立场。即使现在,默认约束的约定似乎也在Grails 3.0.9和3.1.7之间发生了变化。

字段插件的性能对应用程序中使用它的插件总数很敏感。它会动态搜索所有插件以获取模板。

对于愿望清单,我更喜欢更严格的标签命名。主要标签应该是动词。显示和编辑有两个主要操作。对于每个操作,有两个主要变体,单个bean或多个bean。

答案 2 :(得分:0)

我的回答是,目前(2017年3月2日)没有答案。我在网上搜索了高低。对于索引(列表)以及创建和编辑视图,字段插件运行良好。可以从列表视图中相对轻松地从创建和编辑视图中轻松排除某个字段(通过列出应该显示的视图),并且我无法从show视图中找到。这是一个普遍的需求,人们会怀疑它会很快得到解决。此外,在展示视图中轻松显示派生值,例如&#39; total&#39;发票。可以通过添加一个带有列表项的有序列表来实现这一点,列表项显示生成的有序值列表下面的值,但这是一种黑客攻击。

在某些方面,旧的方式更容易。是的,它产生了长视图,但它们是生成的,并且不必由程序员完成 - 只需在这里和那里进行自定义操作。