我已将对象附加到 XWiki 页面。现在当页面显示时,对象的所有属性也显示在页面中。我不想显示所有字段,如何隐藏其中一些?
1 回答
简短的回答:如果您想修改对象在 XWiki 页面中的显示方式,您可以为此编辑类表。
更长的分析器:假设对象 if 属于BarClass
Space中的类Foo
,或 short in Foo.BarClass
。这个类页面,它定义了你的对象有哪些字段,有两个附带的页面,类模板在Foo.BarTemplate
,和一个类表Foo.BarSheet
,其中包含显示这个类的对象的代码。您想查看工作表。
这可以通过在 wiki 编辑器中打开页面来完成,例如
http://localhost:8080/xwiki/bin/edit/Foo/BarSheet?editor=wiki
您将看到如下代码:
{{velocity}}
## You can modify this page to customize the presentation of your object.
## At first you should keep the default presentation and just save the document.
#set($class = $doc.getObject('Foo.BarClass').xWikiClass)
#foreach($prop in $class.properties)
; $prop.prettyName
: $doc.display($prop.getName())
#end
{{/velocity}}
如果您想隐藏,例如field2
,您可以通过将foreach
循环更改为:
#foreach($prop in $class.properties)
#if ($prop.name != 'field2' || $xcontext.action == 'edit')
; $prop.prettyName
: $doc.display($prop.getName())
#end
#end
如果该字段的名称是,$prop.name != 'field2'
则确保该字段不显示,并且注意您的字段仍以编辑模式显示(否则您的用户将无法编辑该字段,这可能不是您想要的)。 field2
$xcontext.action == 'edit'
相反,如果您使用 . 创建了类AppWithinMinutes
,则类表看起来不同:
{{velocity}}
{{html wiki="true"}}
#set ($discard = $doc.use('FooBarCode.FooBarClass'))
#set ($discard = $services.localization.use('document', 'FooBarCode.FooBarTranslations'))
(% class="xform" %)
(((
; <label for="FooBarCode.FooBarClass_0_field1">$escapetool.xml($doc.displayPrettyName('field1', false, false))</label>
: $doc.display('field1')
; <label for="FooBarCode.FooBarClass_0_field2">$escapetool.xml($doc.displayPrettyName('field2', false, false))</label>
: $doc.display('field2')
; <label for="FooBarCode.FooBarClass_0_field3">$escapetool.xml($doc.displayPrettyName('field3', false, false))</label>
: $doc.display('field3')
)))
{{/html}}
{{/velocity}}
在这种情况下,您需要找到显示要隐藏的字段的两行,然后将其包装成一个简单的形式#if ($xcontext.action == 'edit')
:
#if ($xcontext.action == 'edit')
; <label for="FooBarCode.FooBarClass_0_field2">$escapetool.xml($doc.displayPrettyName('field2', false, false))</label>
: $doc.display('field2')
#end
如果您想了解有关如何使用 XWiki 类的更多信息,请阅读http://platform.xwiki.org/xwiki/bin/view/DevGuide/FAQTutorialManual上的教程
通常您想通过“几分钟内的应用程序”应用程序创建和管理您的 wiki 类:http ://extensions.xwiki.org/xwiki/bin/view/Extension/App+Within+Minutes+Application ,它创建了一个用户友好的界面,但是对于您想要的自定义,您需要直接编辑工作表。