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

来源:互联网 发布:西交大网络圈存 编辑:程序博客网 时间:2024/06/05 10:04



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将是空的(没有设置)。





原创粉丝点击