salesforce零基础学习(七十四)apex:actionRegion以及apex:actionSupport浅谈
我们在开发中,很难会遇见不提交表单的情况。常用的apex:commandButton,apex:commandLink,apex:actionFunction,apex:actionSupport。他们进行操作的时候,会将整个表单提交。但是我们很多时候的需求,只是希望提交一部分内容,而不是全部。这个时候,我们就需要用到apex:actionRegion.
一.apex:actionRegion
apex:actionRegion为当一个ajax请求生成的时候,可以通过它来区分哪部分区域/组件可以应该被Force.com Service处理,只有在actionRegion内部的组件元素被处理。
apex:actionRegion用于apex:form中涉及到表单提交指定区域块或者组件的内容,如果一个表单提交请求需要提交整个页面,则不必使用apex:actionRegion。
apex:actionRegion尽管可以用于ajax请求的时候,指定区域提交,但是却无法定义请求完成后的reRender区域,reRender操作仍然在相关的控件的reRender部分来操作,即apex:actionRegion作用只在于提交表单时可以指定区域内容来提交。
二.apex:actionSupport
actionSupport作用为当一个特定的事件被触发,比如单击,失去焦点,鼠标移入等操作被触发时,允许组件进行异步的刷新功能,常用场景为联动,失去焦点后校验在数据库中是否唯一等。
actionSupport和actionFunction在功能上很相像,不过有几点小区别:
1.actionSupport是直接被其他的元素调用,actionFunction可以通过js调用,你可以在js中进行一些简单的处理,也可以直接被其他元素调用;
2.actionSupport仅允许在单一的事件上调用action的method,actionFunction可以被多个事件调用。
demo举例:
1.TestActionSupportController:设置一个testOptions变量,初始值是xxx,当调用changeOptions后变成yyy
public with sharing class TestActionSupportController { public Account acc{get;set;} public String testListValue{get;set;} public List<SelectOption> testOptions {
get {
if(testOptions == null) {
testOptions = new List<SelectOption>();
testOptions.add(new SelectOption('xxx','xxx'));
}
return testOptions;
}set;
} public void changeOptions() {
testOptions = new List<SelectOption>();
testOptions.add(new SelectOption('yyy','yyy'));
}
}
2.TestActionSupport.page:显示一个必填输入框以及一个下拉列表,下拉列表控制着另外一个下拉列表的显示。
<apex:page controller="TestActionSupportController">
<apex:form id="theForm">
<apex:inputField value="{!acc.Name}" required="true" style="padding-bottom: 5px;"/>
<br/>
<apex:outputPanel id="industryPanel" style="padding-bottom: 5px;">
<apex:inputField value="{!acc.Industry}"/>
<apex:actionSupport event="onchange" action="{!changeOptions}" reRender="testSelectList"/>
</apex:outputPanel>
<apex:selectList value="{!testListValue}" id="testSelectList" style="margin-left: 5px;">
<apex:selectOptions value="{!testOptions}">
</apex:selectOptions>
</apex:selectList>
</apex:form>
</apex:page>
显示效果如下:
其实上面的vf代码是有问题的,当选择了下拉框,右侧的下拉框的值也不修改成yyy,原因是这样的:
当actionSupport执行时,会提交整个form表单,因为上面有一个required的字段,所以导致提交表单失败,没有走action对应的后台的的method,所以没有更新下拉框里面的值,这种情况有两种可以修改的方式,1是将actionSuuport设置成immediate="true"方式,可以忽略表单的validation,第二种是使用actionRegion方式,这样from表单提交时只提交actionRegion内的数据,从而避免了上面的尴尬,使用actionRegion方式修改如下:
<apex:page controller="TestActionSupportController">
<apex:form id="theForm">
<apex:inputField value="{!acc.Name}" required="true" style="padding-bottom: 5px;"/>
<br/>
<apex:actionRegion>
<apex:outputPanel id="industryPanel" style="padding-bottom: 5px;">
<apex:inputField value="{!acc.Industry}"/>
<apex:actionSupport event="onchange" action="{!changeOptions}" reRender="testSelectList"/>
</apex:outputPanel>
<apex:selectList value="{!testListValue}" id="testSelectList" style="margin-left: 5px;">
<apex:selectOptions value="{!testOptions}">
</apex:selectOptions>
</apex:selectList>
</apex:actionRegion>
</apex:form>
</apex:page>
显示效果:当更改下拉框的之,会修改成yyy
总结:使用actionRegion和actionSupport可以更加灵活的提交表单,提升表单提交的性能。内容描述错误的地方欢迎指出,有问题欢迎留言。
salesforce零基础学习(七十四)apex:actionRegion以及apex:actionSupport浅谈的更多相关文章
- salesforce 零基础学习(十九)Permission sets 讲解及设置
Permission sets以及Profile是常见的设置访问权限的方式. Profile规则为'who see what'.通过Profile可以将一类的用户设置相同的访问权限.对于有着相同Pro ...
- salesforce 零基础学习(十八)WorkFlow介绍及用法
说起workflow大家肯定都不陌生,这里简单介绍一下salesforce中什么情况下使用workflow. 当你分配许多任务,定期发送电子邮件,记录修改时,可以通过自动配置workflow来完成以上 ...
- salesforce 零基础学习(十六)Validation Rules & Date/time
上一篇介绍的内容为Formula,其中的Date/time部分未指出,此篇主要介绍Date/time部分以及Validation rules. 本篇参考PDF: Date/time:https://r ...
- salesforce零基础学习(九十四)classic下pagelayout引入的vf page弹出内容更新此page layout
我们在classic环境中,有时针对page layout不能实现的地方,可以引入 一个vf page去增强标准的 page layout 功能,有时可能要求这个 vf page的部分修改需要更新此 ...
- salesforce零基础学习(八十)使用autoComplete 输入内容自动联想结果以及去重实现
项目中,我们有时候会需要实现自动联想功能,比如我们想输入用户或者联系人名称,去联想出系统中有的相关的用户和联系人,当点击以后获取相关的邮箱或者其他信息等等.这种情况下可以使用jquery ui中的au ...
- salesforce零基础学习(八十九)使用 input type=file 以及RemoteAction方式上传附件
在classic环境中,salesforce提供了<apex:inputFile>标签用来实现附件的上传以及内容获取.salesforce 零基础学习(二十四)解析csv格式内容中有类似的 ...
- salesforce零基础学习(八十七)Apex 中Picklist类型通过Control 字段值获取Dependent List 值
注:本篇解决方案内容实现转自:http://mysalesforceescapade.blogspot.com/2015/03/getting-dependent-picklist-values-fr ...
- salesforce 零基础学习(五十二)Trigger使用篇(二)
第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...
- salesforce零基础学习(八十二)审批邮件获取最终审批人和审批意见
项目中,审批操作无处不在.配置审批流时,我们有时候会用到queue,related user设置当前步骤的审批人,审批人可以一个或者多个.当审批人有多个时,邮件中获取当前记录的审批人和审批意见就不能随 ...
- salesforce零基础学习(一百一十)list button实现的一些有趣事情
本篇参考: salesforce零基础学习(九十五)lightning out https://developer.salesforce.com/docs/component-library/docu ...
随机推荐
- 2016年BAT公司常见的Web前端面试题整理
1.JavaScript是一门什么样的语言,它有哪些特点? 没有标准答案. 2.JavaScript的数据类型都有什么? 基本数据类型:String,boolean,Number,Undefined ...
- PXC5.7集群部署
PXC三节点安装: node1:10.157.26.132 node2:10.157.26.133 node3:10.157.26.134 配置服务器ssh登录无密码验证 ssh-keygen实现 ...
- [js笔记整理]面向对象篇
一.js面向对象基本概念 对象:内部封装.对外预留接口,一种通用的思想,面向对象分析: 1.特点 (1)抽象 (2)封装 (3)继承:多态继承.多重继承 2.对象组成 (1)属性: 任何对象都可以添加 ...
- 1.各个浏览器内核?经常遇到的浏览器兼容性有哪些?解决办法?常用的hack技巧?
IE: trident内核 Firefox(火狐):gecko内核 Safari(苹果):webkit内核 Opera(欧鹏):以前是presto内核,现在是Blink内核 Chrome:Blink ...
- Oracle 12C 新特性之 PDB热克隆(本地克隆、远端异机克隆)
说明:版本12.2.0.1 12c r1版本中 clone 一份PDB源库需要打开在read only只读模式 , 在12c r2版本中引入了local undo mode, 源PDB在read/wr ...
- MyBatis之TypeHandler
在大学写web应用的时候经常会遇到这么个问题,当我要插入一条数据,某个数据是Date类型,数据库中却是VARCHAR类型,这个时候可能会傻乎乎的先把这个数据自己手动转换成String类型再插入到数据库 ...
- 响应式网站-全屏banner响应的2中方法 - 被吃掉的banner
通常来讲, 设计师们喜欢把banner设计成全屏(1920px或以上) 主题内容控制在一定的范围内一般在1200px左右 这样的设计即可以在宽屏上的表现很好.也能向下兼容一些小屏幕的设备: 如下图(所 ...
- SmartCoder每日站立会议10
站立会议内容: 准备为上交第一阶段项目进行加班,将各个页面联系起来,静态地图变为动态转换,考虑地图全屏或者是小屏即消息展示方式 1.站立会议照片: 2.任务展板: 3.燃尽图:
- iOS-swift-基础篇1
一.swift是啥?答:百度. 二.swift基础知识. 1.输出函数:print print("Hello, world!") 2.简单数据类型 变量声明:var 常量声明:le ...
- 前端设计技巧——用 Promise 处理交互和异步
本文仅表达前端的一些设计技巧,如果您在查阅js技术,请忽略此文! 前端开发经常会遇到这样的场景: 当满足一定条件时,需要弹出一个模态框,以便接收用户的输入.然后根据不同的输入,进行不用的操作. (ps ...