ofbiz的form网上资料总结

首先感谢:加速度 , ofbiz利昂

ofbiz form中下拉列表的代码
• <field name="agreementTypeId"
title="${uiLabelMap.AccountingAgreementTypeId}">
<drop-down allow-empty="true">
<entity-options
description="${description}"
entity-name="AgreementType"
key-field-name="agreementTypeId"/>
</drop-down>
</field>
以上是在form中显示下拉列表的代码示例,title是下拉列表前的说明文字,entity-name是下拉列表表项的取值实体,description是下拉列表显示的表项,此处,下拉列表的表项从实体AgreementType中的description域取值.另外,标签中的allow-empty如果为ture则允许该下拉菜单为空,如果为false则必须在下拉列表中选择其一.

OFBIZ FORM表头汉化示例
• <form name="ContactList" type="list" list- name="allContacts">
<auto-fields-entity entity-name="Contact" default-field-type="display"/>
<field name="contactId" title="联系人ID"></field>
<field name="name" title="姓名"></field>
<field name="duty" title="职位"></field>
<field name="responsibility" title="职责"></field>
<field name="corporation" title="单位"></field>
<field name="email" title="E-mail"></field>
<field name="tel" title="电话"></field>
<field name="msn" title="MSN"></field>
<field name="qq" title="QQ"></field>
</form>
首先, <auto-fields-entity entity-name="Contact" default-field-type="display"/> 先将实体Contact的所有域取出来,如果下面不对各域作具体指定则直接根据display的格式显示各域.其次,下面的每一个条<field name="contactId" title="联系人ID"></field>语句都将对应域的表头进行汉化.


ofbiz form中不显示实体某域的代码
• 在用<auto-fields-entity entity-name="Contact" default-field-type="display"/>读出实体的所有域后用<field name="...." title="...."><hidden/></field>指定具体的隐藏域即可.


ofbiz查找功能关键代码
• 其中FindTest表单是用于输入查询条件的表单,ResultTest表单是用于显示查询结果的表单.两张表单在同一页面上显示.其中,Test是实体名.
<form name="FindTest" target="main" type="single">
<auto-fields-entity entity-name="Test" default-field-type="find"/>
<field name="submitButton" title="查找" widget-style="smallSubmit">
<submit button-type="button"/>
</field>
</form>

<form name="ResultTest" list-iterator-name="listIt" target="" paginate-target="main" title="" type="list">
<actions>
<set field="entityName" value="Test"/>
<service service-name="performFind" result-map-name="result" result-map-list-iterator-name="listIt">
<field-map field-name="inputFields" env-name="requestParameters"/>
<field-map field-name="entityName" env-name="entityName"/>
</service>
</actions>
<auto-fields-entity entity-name="Test" default-field-type="display"/>
</form>

小结:
查询功能不需要minilanguage或java来实现.输入查询条件的表单type为single,target指向的是当前页面,auto-fields-entity元素的type为find.
显示查询结果的表单比较特别,该表单中有<action>部分,其中的代码就是实现查询功能的代码,具体使用时修改实体名即可.和其它表单一样,可以指定具体域有特殊的显示效果或隐藏.



如何基于ofbiz在页面中显示一张数据库表(利昂原创)
• (备注:要看懂该文章必须具备OFBIZ的基础知识。)

关键代码1:在widget的screen中,action部分用<entity-condition 标签指定实体名和实体列表名;
关键代码2:在widget的screen中,widgets部分用<include-form 标签指定被引用表单的位置和表单名;
<screen name="guestbook">
<section>
<actions>
<!-- find HelloPerson by condition. since there is no conditions, all values of HelloPerson are returned in allGuests -->
<entity-condition entity-name="HelloPerson" list-name="allGuests"><order-by field-name="helloPersonId"/></entity-condition>
<!--窗口中调用的表单用到的实体数据在该处指出!!如果该句设置得不对表单中将不显示数据!!!-->
</actions>
<widgets>
<decorator-screen name="CommonDecorator">
<decorator-section name="body">
<label>我们的客人和他们说的话</label> <!-- a label/header -->
<!-- use this form directly, instead of going through a Freemarker template again -->
<include-form name="GuestbookList" location="component://hello3/webapp/hello3/guestbook/GuestbookForms.xml"/>

</decorator-section>
</decorator-screen>
</widgets>
</section>
</screen>

关键代码3:在表单文件内的对应(上面的<include-form 标签指出的表单名)的表单代码处,<form 标签的type要设成list,list-name要和widget中窗口中的action部分的列表名一致。
<form name="GuestbookList" type="list" list-name="allGuests">
<!-- 该处的列表名和widget的窗口action中指定的列表名要对应!this form just lists all the values of allGuests -->
<auto-fields-entity entity-name="HelloPerson" default-field-type="display"/>
<!-- 自动显示指定实体的所有域automatically display all fields from HelloPerson -->
</form>

总体思路就是:form根据实体定义创建表头,action里的entity condition根据条件从数据库中取出数据显示于表中,这就完成了在页面上显示数据库表的过程。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值