您的位置:首页 > 其它

ofbiz总结——Screen Widgets定义中常用的一些标签

2017-10-25 11:14 363 查看
1. if-then-else结构

<screen name="ConditionalScreen">
<section>
<condition>
<if-compare field="parameters.show" operator="equals" value="widgets" />
</condition>
<actions>
<set field="blah" value="blih" />
</actions>
<widgets>
<label text="Condition passed. Showing widgets element. Blah
is: ${blah}" />
</widgets>
<fail-widgets>
<label text="Condition failed! Showing fail-widgets element.
Blah is: ${blah}" />
</fail-widgets>
</section>
</screen>


<condition>元素组成<section>元素的If部分。如果元素中条件的值为true, if-then-else结构的"then"部分将被执行。否则,Else部分将被执行。

我们能放入<condition>元素中的有12中可能的条件类型。其中的四种是逻辑操作(或者合并):<and>、<xor>、<or>和<not>。三个是有关权限检查的: <if-service-permission>、<if-has-permission>和<if-entity-permission>。剩下的五种是各种形式的比较,其中的一个是简单的空值检查:<if-validate-method>、
<if-compare>、<if-compare-field>、<if-regexp>和<if-empty>。

我们已经使用了这些条件中的最简单的<if-compare>元素。

2. <actions>标签
 <actions>元素包含了预处理动作,它通常(通过OFBiz MVC架构的约定)是数据操作、事务或者获取(CRUD中的R)、数据创建、更新和删除(CRUD中的其他部分)应在请求映射的事件中完成(本书稍后介绍),不是在视图动作中(定义在<actions>元素中的预处理)。视图层仅仅应该准备显示的数据,而非更改数据。

有10种可能类型的动作我们能放到<actions>元素中。其中的五个是数据获取(从数据库)动作,它把数据放入变量中,变量是可访问的并且我们可用之于screen widget容器。这五种类型是:<entity-and>、<entity-condition>、<entity-one>、<get-related-one>和<get-related>。第7章后我们将了解更多。

10种可能的动作类型中的两种调用可以是复杂商务逻辑的代码。动作类型<script>调用用BeanShell编写的代码。动作类型<service>调用包装在OFBiz服务(OFBiz一个主要优点,本书稍后有介绍)的代码。

十种可能动作类型的3种简单地把值赋给变量,以和数据获取动作相同的方式。活动类型 <property-map>和<property-to-field>从一个属性或者配置文件中获取值。最简单的动作<set>,将任何我们想要的值设置给任何变量。我们现在就将在例子中介绍它。

在screen widget ConditionalScreen中我们使用了最简单的动作:

---------------------------------------------------

<actions>

    <set field="blah" value="blih" />

</actions>

---------------------------------------------------

我们设置字符串值blih到变量blah上。

注意,<actions>元素不会被处理直到 <condition>被完全处理。因此,如果评估,在<condition>中变量blah的值仍然未设置。下面的评估是false:

---------------------------------------------------

<condition>

          <if-compare field="blah" operator="equals" value="blih"/>

</condition>

---------------------------------------------------

3. <widgets>标签
<widgets>元素是一个显示元素,在它里面放置我们需要显示的内容。有15种元素我们能够放入到<widgets>元素中。多数元素类型是符合的,调用其他widget产品的嵌套结构,一些是递归的(想象为”screen中的screen中的screen“)。这些类型中的四种是简单的:<container>、<image>、<link>和<label>。

所有的15种元素将在本书稍后做详情介绍。现在简短地,相比于我们所知的XHTML,我们只需要知道<container> 等同于XHTML元素<div>,<image>元素等同于<img>元素,<link>元素等同于<a>,<label>等同于平面文件(非标记)。

在ConditionalScreen中我们已经使用了简单的<label>元素。

---------------------------------------------------

<label text="Condition passed. Showing widgets element. Blah is: ${blah}" />

---------------------------------------------------

如果If部分估值为true,我们应该能看到文本:Condition passed.Showing widgets element. Blah is: blih.

4.<fail-widgets>标签
在结构和功能上,<fail-widgets>元素就像<widgets>元素。然而,<fail-widgets>元素仅仅处理如果if部分估值为false情况。在那个例子中,Then部分被完全跳过,<actions>元素和<widgets>元素也一点没处理。

再次,在我们的ConditionalScreen中使用简单的<label>元素:

---------------------------------------------------

<fail-widgets>

    <label text="Condition failed! Showing fail-widgets element.Blah is: ${blah}" />

</fail-widgets>

---------------------------------------------------

如果if部分估值为false,我们应该能看到文本:Condition failed!Showing fail-widgets element. Blah is: 

注意<actions>如何被跳过的,并且变量blah将是空的(没有设置)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: