0

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

生成的show.gsp包含

<f:display bean="rfaPdffile"/>

这将包括一个可能包含数兆字节 XML 的字段。它不应该以交互方式显示。该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:属性(如 in f:table),除了(如 in f:all)。我顺便注意到,这两个属性具有不同的语法用于类似的目的。

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

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

4

3 回答 3

0

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

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

还有一个你不想显示的:

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

因此,将所有属性列为f:fieldorf:display并将您不希望显示的属性放在g:hiddenFieldGrails 标记中您也可以尝试:

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

但在这种情况下,标签并没有隐藏。希望能帮助到你

于 2016-05-17T08:36:50.470 回答
0

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

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

于 2017-03-02T02:43:50.183 回答
0

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

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

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

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

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

于 2016-06-02T08:18:52.023 回答