Visualforce开发实用技巧与技术要点
1. 权限检查与DML操作
在相关列表组件中,若缺少前置检查,当用户配置文件缺乏相应权限时,页面可能会崩溃。对于通过命令按钮执行的自定义DML操作,可添加如下检查:
<apex:commandButton value="Update" rendered="{!$ObjectType.Account.Updateable}" action="{!customAccountUpdate}"/>
若想深入了解在Visualforce(VF)和Apex中实施CRUD(创建、读取、更新、删除)/FLS(字段级安全)的方法,可访问以下链接:
- http://wiki.developerforce.com/page/Enforcing_CRUD_and_FLS
- http://wiki.developerforce.com/page/Testing_CRUD_and_FLS_Enforcement
2. 杂项技巧
2.1 查询百万行数据
默认情况下,Apex代码一次最多只能查询50,000行数据,这在某些场景下可能会受限。为突破此限制,可在
<apex:page />
组件中使用
readOnly
属性,该属性可将查询行数上限提升至100万行,但会限制页面执行DML操作的能力。此属性适用于生成只读报表、图表等页面。
2.2 页面渲染为PDF
VF运行时允许通过在Apex页面标签中设置
renderAs
为
pdf
,将页面渲染为PDF格式,示例代码如下:
<apex:page renderAs="pdf" />
以下是一些关于打印复杂页面的实用技巧链接,如添加页码、页脚图片以及控制PDF样式等:
- Creating professional PDF documents with CSS and Visualforce: http://wiki.developerforce.com/page/Creating_Professional_PDF_Documents_with_CSS_and_Visualforce
- Header and footer tweaks: http://forceguru.blogspot.in/2010/12/header-footer-in-pdf.html
2.3 动态VF组件
有时,复杂的组件结构无法直接通过Visualforce代码绘制,即页面的某些组件需要根据Apex逻辑以编程方式创建,而这在VF代码中难以实现。此时,使用动态Visualforce组件是个不错的选择。例如,创建
apex:outputText
的Apex代码如下:
Component.Apex.OutputText opText = new Component.Apex.OutputText();
opText.value = account.BillingCity; // Billing City based on previously loaded Account record
几乎所有VF组件都有对应的Apex等效代码。关于创建相关列表的实际示例,可参考VF开发者指南:http://www.salesforce.com/us/developer/docs/pages/Content/pages_dynamic_vf_components_sample.htm
2.4 图表
在Visualforce中展示信息为图表时,可选择使用第三方API(如Google Charts)或原生Visualforce图表(于Winter ‘13版本正式发布)。除非客户倾向于第三方图表解决方案,否则建议使用Visualforce图表,原因如下:
| 对比项 | 第三方图表 | Visualforce图表 |
| — | — | — |
| 许可证和使用条款 | 需要确保与应用业务模型兼容 | 无此顾虑 |
| 成本 | 可能需额外付费,并受使用和负载限制 | 无需额外付费 |
| 稳定性 | 第三方服务器维护期间,应用页面可能无法访问或崩溃 | 符合平台维护窗口,应用整体性能良好 |
| 代码复杂度 | 可能需要较多代码进行集成 | 通常只需最少的代码即可连接 |
以下是一个简单的绘制图表的代码示例:
<apex:page standardController="Opportunity" recordSetVar="opps">
<apex:chart data="{!opps}" width="600" height="400">
<apex:axis type="Category" position="left" fields="Name" title="Opportunities"/>
<apex:axis type="Numeric" position="bottom" fields="Amount" title="Amount"/>
<apex:barSeries orientation="horizontal" axis="bottom" xField="Name" yField="Amount"/>
</apex:chart>
</apex:page>
3. 其他技术要点
3.1 开发环境相关
开发环境包括开发版、沙盒等,不同环境有不同的用途和特点。开发版适用于个人或合作伙伴开发,沙盒可分为配置沙盒、开发沙盒和全量沙盒等。以下是开发环境的选择和使用流程:
graph LR
A[选择开发环境] --> B{开发需求}
B -->|个人开发| C[个人开发版]
B -->|团队协作| D[合作伙伴开发版]
B -->|测试与模拟| E[沙盒]
E --> F{沙盒类型}
F -->|仅配置| G[配置沙盒]
F -->|开发测试| H[开发沙盒]
F -->|全量数据模拟| I[全量沙盒]
3.2 数据操作
数据操作包括数据导入、导出和集成。数据导入时,需先确定数据源,准备数据,进行测试导入并分析结果,最后完成导入。数据导出可使用数据加载器。数据集成可借助第三方工具实现。以下是数据导入的步骤:
1. 确定数据源
2. 准备数据
3. 进行测试导入并分析结果
4. 完成数据导入
3.3 代码优化
Apex代码优化包括使用正确的命名规范、简化循环、减少脚本语句等。例如,使用枚举来优化常量,示例代码如下:
public enum MyConstants {
CONSTANT_1('Value 1'),
CONSTANT_2('Value 2');
private final String value;
MyConstants(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
3.4 安全与权限
在Apex和VF中,需实施CRUD/FLS检查,以确保数据的安全性和用户对数据的合法访问。例如,在VF页面中使用
$ObjectType
全局变量进行权限检查。
3.5 调试与监控
可使用调试日志和监控工具来跟踪资源使用情况、查找错误。调试日志可在设置区域使用,同时可设置调试日志过滤器。
4. 总结
本文涵盖了Visualforce开发的多个方面,包括权限检查、数据查询、页面渲染、组件创建、图表展示等实用技巧,以及开发环境选择、数据操作、代码优化、安全与权限管理和调试监控等技术要点。通过合理运用这些技巧和方法,可提高开发效率,优化应用性能,确保应用的安全性和稳定性。在实际开发中,可根据具体需求选择合适的技术和方法,不断探索和实践,以提升开发水平。
Visualforce开发实用技巧与技术要点
5. 报表与仪表盘
5.1 报表类型
报表类型丰富多样,不同类型适用于不同的业务场景。以下是常见报表类型及其特点:
| 报表类型 | 特点 |
| — | — |
| 表格报表(Tabular Report) | 简单直接,以表格形式展示数据,适合快速查看大量数据 |
| 汇总报表(Summary Report) | 可对数据进行分组和汇总,能查看小计和总计 |
| 矩阵报表(Matrix Report) | 以二维表格形式展示数据,可按行和列进行分组和汇总 |
| 联合报表(Joined Report) | 可将多个对象的数据组合在一个报表中 |
5.2 报表创建与操作
创建报表时,可使用条件高亮、自定义汇总公式等功能。报表还支持过滤、排序、导出、打印等操作。以下是创建报表的一般步骤:
1. 选择报表类型
2. 选择对象和字段
3. 设置过滤条件
4. 进行分组和汇总设置
5. 使用条件高亮和自定义汇总公式
6. 保存并运行报表
5.3 仪表盘
仪表盘可将多个报表组合在一起,以直观的方式展示关键数据。仪表盘支持数据刷新、过滤器设置等功能。以下是仪表盘的使用流程:
graph LR
A[创建仪表盘] --> B{选择报表}
B --> C[添加报表到仪表盘]
C --> D[设置布局和样式]
D --> E[设置数据刷新和过滤器]
E --> F[保存并查看仪表盘]
6. 页面设计与优化
6.1 页面布局与模板
在VF代码中,可定义页面布局和模板,以实现页面的复用。例如,使用
<apex:composition>
组件来包含其他VF页面,示例代码如下:
<apex:composition template="{!$Page.MyTemplate}">
<apex:define name="body">
<!-- 页面内容 -->
</apex:define>
</apex:composition>
6.2 视图状态管理
视图状态是VF页面中的一个重要概念,需对其进行有效管理,以避免页面性能下降。可通过避免使用多个表单、仅查询所需字段等方式来限制视图状态。以下是管理视图状态的方法:
1. 使用视图状态检查器来监控视图状态大小
2. 避免使用多个表单
3. 仅查询所需字段
4. 使用静态变量和瞬态变量
6.3 页面性能优化
页面性能优化包括加速Ajax调用、优化JavaScript远程调用等。例如,使用
action regions
来划分Ajax调用区域,使用
immediate
属性来立即执行操作。以下是加速Ajax调用的方法:
1. 使用
action regions
来划分Ajax调用区域
2. 使用
immediate
属性来立即执行操作
3. 仅重新渲染需要更新的组件
7. 组件与对象
7.1 标准对象与自定义对象
Salesforce中有多种标准对象,如账户、联系人、机会等,同时也支持创建自定义对象。自定义对象的设计需考虑数据结构、对象关系、页面布局等因素。以下是标准对象和自定义对象的对比:
| 对象类型 | 特点 |
| — | — |
| 标准对象 | 系统自带,具有固定的字段和功能 |
| 自定义对象 | 可根据业务需求自定义字段、关系和页面布局 |
7.2 对象关系
对象关系包括查找关系、主从关系和多对多关系等。选择合适的对象关系对于数据建模和业务逻辑实现至关重要。以下是常见对象关系的特点:
| 关系类型 | 特点 |
| — | — |
| 查找关系(Lookup Relationship) | 一个对象引用另一个对象,可独立存在 |
| 主从关系(Master-Detail Relationship) | 子对象依赖于父对象,父对象删除时子对象也会被删除 |
| 多对多关系(Many-to-Many Relationship) | 通过中间对象来实现两个对象之间的多对多关联 |
7.3 组件使用
VF组件可用于构建页面和实现交互功能。常见的VF组件包括
apex:outputText
、
apex:inputField
、
apex:commandButton
等。例如,使用
apex:inputField
组件来创建输入字段,示例代码如下:
<apex:inputField value="{!account.Name}" />
8. 持续学习与实践
8.1 学习资源
可通过Salesforce开发者官网、开发者论坛、相关书籍等渠道获取更多的学习资源。例如,Salesforce开发者官网提供了丰富的文档和教程,开发者论坛可与其他开发者交流经验和解决问题。
8.2 实践项目
通过实践项目来巩固所学知识,提高开发技能。可从简单的项目开始,逐步增加项目的复杂度。在实践过程中,不断总结经验,优化代码和解决方案。
8.3 社区参与
参与Salesforce开发者社区,与其他开发者分享经验、交流技术,了解最新的行业动态和技术趋势。通过社区参与,可拓宽视野,提升自己的技术水平和影响力。
9. 总结
Visualforce开发是一个综合性的领域,涉及到多个方面的知识和技能。本文详细介绍了Visualforce开发中的各种实用技巧和技术要点,包括权限检查、数据操作、代码优化、报表与仪表盘、页面设计与优化等。通过掌握这些知识和技能,并不断学习和实践,开发者可以开发出高效、安全、稳定的应用程序,满足不同业务场景的需求。在未来的开发过程中,开发者应持续关注技术的发展和变化,不断提升自己的能力,以适应不断变化的市场需求。
Visualforce开发实用技巧与技术要点
超级会员免费看
66

被折叠的 条评论
为什么被折叠?



