浏览 4172 次
锁定老帖子 主题:ofbiz的form网上资料总结
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-04-03
首先感谢:加速度 , 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根据条件从数据库中取出数据显示于表中,这就完成了在页面上显示数据库表的过程。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |