如何使用ZK在UI中迭代和加载属性文件值?

时间:2015-05-25 12:18:32

标签: java zk

我有一个名为" ABC.properties"的属性文件。具有诸如

之类的值
A="APPLE"
B="BALL"
C="CAT"

现在我需要获取这些值并加载到我的UI中。迭代然后需要加载,因为在那个属性文件中可能有超过50个值。

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

在zk.xml文件中,提供您想要阅读的属性文件的路径。

<zk>
<system-config>
    <label-location>/path/to/ABC.properties</label-location>
</system-config>
</zk>

如果你想在zul文件中阅读它们,例如你想要显示值为A的标签,那么

< label value="${labels.A}" />

如果要在侦听器类中读取属性文件的值,请执行

Labels.getLabel("A");

答案 1 :(得分:1)

首先,我不知道属性文件中是否有更多项目需要提取。
注意:多个属性文件都以这种方式呈现,并且可以在同一个地图中访问 如果是的话:

使用小节转换密钥:

FRUIT.APPLE = apple
FRUIT.ORANGE = orange
TOYS.BALL = ball
TOYS.DOLL = doll

等等。
接下来是@BhushanPatil已经提到过:

  

在zk.xml文件中,提供您想要阅读的属性文件的路径。

<zk>
    <system-config>
        <label-location>/path/to/ABC.properties</label-location>
   </system-config>
</zk>

然后,您在Labels下有getSegmentedLabels方法 这是我们将使用的方法。

因此,如果您只想在zul中声明它,那么下一步就是您必须做的事情:

<?xel-method 
    prefix="prop" name="all" class="org.zkoss.util.resource.Labels"
    signature="java.util.Map getSegmentedLabels()"?>

<vlayout forEach="${prop:all().get('FRUIT')}">
    <label value="${each.key} : ${each.value}"/>
</vlayout>

Xel-method用于声明静态方法(在ZK 8之前访问静态方法的唯一方法)。
现在我们想要获取所有FRUIT标签,因此我们使用Xel方法名称getSegmentedLabels调用all()
这将返回Map<String,Object>所有标签所在的位置 我们只对FRUIT小节感兴趣,因此我们得到了密钥FRUIT背后的值 这个对象又是一个Map<String,Object>,它包含FRUIT下的每个键 在此示例中,它包含&lt;&#39; APPLE&#39; apple&#39;&gt;,&lt;&#39; ORANGE&#39;&#39; orange&#39;&gt;。< / p>

接下来我们需要做的是迭代Map并显示Map的所有值。

我们使用forEach attribute.来执行此操作 因此,each对象的值现在是类Entry<String,Object>的对象 现在唯一要显示的是显示值,Entry.getValue()