salesforce 零基础学习(五十九)apex:param使用以及相关的疑惑
做web项目难免要从一个页面传参数,解析参数中的值进行相关处理以后跳转到其他页面,VF中也不例外。使用传参的标签为apex:param。
apex:param标签不可以单独使用,需要作为子标签嵌套在相关父标签内,可以使用此标签的标签如下:

apex:param主要有两个用法:
- 对文本进行相关格式转换
- 传递参数
一.对文本进行相关格式转换:此种方式主要是apex:outputText的value支持和java中的MessageFormat同样的语法。
java api 的MessageFormat类:http://tool.oschina.net/uploads/apidocs/jdk-zh/java/text/MessageFormat.html
MessageFormat可以使用以下形式的模式:

通过api我们可以看出如果使用MessageFormat可以使用三种方式:
{i};{i,type};{i,type,style}
demo举例:
<apex:page >
<apex:pageBlock title="param 的format用法">
<div >
对日期类型进行格式转换输入:<br/>
转换前的日期格式:
<apex:outputText value="{!NOW()}"/><br/>
转换后的日期格式:
<apex:outputText value="{0,date,YYYY-MM-dd HH:mm:ss}">
<apex:param value="{!NOW()}"/>
</apex:outputText>
</div>
<div>
对普通类型进行相关规则的关联:eg: 用户名 - 别名<br/>
<apex:outputText value="{0} - {1}">
<apex:param value="{!$User.Username}"/>
<apex:param value="{!$User.Alias}"/>
</apex:outputText>
</div>
<div>
对number类型进行相关操作:
<apex:outputText value="{0,number,000,000,000.00}">
<apex:param value="{!NOW() - $System.OriginDateTime}"/>
</apex:outputText>
</div>
</apex:pageBlock>
</apex:page>
显示效果:

二.传递参数
传递参数主要以apex:commandButton进行介绍。此标签绑定一个action,设置value以后便可访问controller层中的相关方法,通过apex:param作为子标签便可以在此方法中设置相关参数:
错误demo:
TestActionFunctionController层:
public with sharing class TestActionFunctionController {
public String param{get;set;}
public PageReference redirectToBlankPage() {
system.debug('=============param : ' + param);
PageReference ref = new PageReference('/apex/detailGoodsTotal');
//ref.setRedirect(true);
//return ref;
return Page.detailGoodsTotal;
}
}
Page页--TestActionFunctionPage:此页面用于显示跳转按钮
<apex:page controller="TestActionFunctionController">
<apex:form >
<apex:commandButton action="{!redirectToBlankPage}" value="通过commandButton赋值param并跳转到空白页">
<apex:param name="param" value="test param2" assignTo="{!param}"/>
</apex:commandButton>
</apex:form>
</apex:page>
Page页--detailGoodsTotal.page:空白跳转页
<apex:page controller="TestActionFunctionController">
blank page
</apex:page>
此种方式出现两个问题:
首先:param传递到后台是null。此种方式原因为为commandButton没有添加reRender属性,只需要添加reRender属性即可
正确的Page页--TestActionFunctionPage
<apex:page controller="TestActionFunctionController">
<apex:form >
<apex:commandButton action="{!redirectToBlankPage}" value="通过commandButton赋值param并跳转到空白页" reRender="x">
<apex:param name="param" value="test param2" assignTo="{!param}"/>
</apex:commandButton>
<apex:pageBlock id="x" rendered="false"></apex:pageBlock>
</apex:form>
</apex:page>
第二个问题:

此种方式原因为两个Page共用了一个Controller,如果跳转时需要重定向,即设置pageRef.setRedirect(true);
正确的Controller:
public with sharing class TestActionFunctionController {
public String param{get;set;}
public PageReference redirectToBlankPage() {
system.debug('=============param : ' + param);
PageReference ref = new PageReference('/apex/detailGoodsTotal');
ref.setRedirect(true);
return ref;
}
}
总结:此篇主要讲了apex:param的相关使用方法以及碰到的一点问题,至于为什么用reRender和为什么setRedirect(即转发和重定向的选择)这两个还是不懂原理,希望懂得大神可以留言解惑,不懂的欢迎留言。
salesforce 零基础学习(五十九)apex:param使用以及相关的疑惑的更多相关文章
- salesforce 零基础学习(十九)Permission sets 讲解及设置
Permission sets以及Profile是常见的设置访问权限的方式. Profile规则为'who see what'.通过Profile可以将一类的用户设置相同的访问权限.对于有着相同Pro ...
- salesforce零基础学习(九十九)Git 在salesforce项目中的应用(vs code篇)
本篇参考: https://code.visualstudio.com/docs/editor/versioncontrol https://git-scm.com/doc https://git-s ...
- salesforce 零基础学习(十八)WorkFlow介绍及用法
说起workflow大家肯定都不陌生,这里简单介绍一下salesforce中什么情况下使用workflow. 当你分配许多任务,定期发送电子邮件,记录修改时,可以通过自动配置workflow来完成以上 ...
- salesforce 零基础学习(十六)Validation Rules & Date/time
上一篇介绍的内容为Formula,其中的Date/time部分未指出,此篇主要介绍Date/time部分以及Validation rules. 本篇参考PDF: Date/time:https://r ...
- salesforce零基础学习(九十九)Salesforce Data Skew(数据倾斜)
本篇参考: https://developer.salesforce.com/blogs/engineering/2013/04/managing-lookup-skew-to-avoid-recor ...
- salesforce零基础学习(八十九)使用 input type=file 以及RemoteAction方式上传附件
在classic环境中,salesforce提供了<apex:inputFile>标签用来实现附件的上传以及内容获取.salesforce 零基础学习(二十四)解析csv格式内容中有类似的 ...
- salesforce 零基础学习(五十二)Trigger使用篇(二)
第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...
- salesforce零基础学习(八十)使用autoComplete 输入内容自动联想结果以及去重实现
项目中,我们有时候会需要实现自动联想功能,比如我们想输入用户或者联系人名称,去联想出系统中有的相关的用户和联系人,当点击以后获取相关的邮箱或者其他信息等等.这种情况下可以使用jquery ui中的au ...
- salesforce零基础学习(一百零五)Change Data Capture
本篇参考: https://developer.salesforce.com/docs/atlas.en-us.232.0.api_streaming.meta/api_streaming/using ...
- salesforce零基础学习(八十七)Apex 中Picklist类型通过Control 字段值获取Dependent List 值
注:本篇解决方案内容实现转自:http://mysalesforceescapade.blogspot.com/2015/03/getting-dependent-picklist-values-fr ...
随机推荐
- Git 子模块 - submodule
有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目. 也许是第三方库,或者你 独立开发的,用于多个父项目的库. 现在问题来了:你想要把它们当做两个独立的项目,同时又想在 一个项目中使用另 ...
- 2017-1-5 天气雨 React 学习笔记
官方example 中basic-click-counter <script type="text/babel"> var Counter = React.create ...
- 逆天Kali带你游遍大江南北~安全之前人铺路!
0.Linux基础学习(基本指令) http://www.cnblogs.com/dunitian/p/4822807.html 1.Kali安装到移动硬盘或者U盘中~Linux系列通用方法(包括An ...
- 使用Java原生代理实现AOP
### 本文由博主柒.原创,转载请注明出处 ### 完整源码下载地址 [https://github.com/MatrixSeven/JavaAOP](https://github.com/Matri ...
- 拼图小游戏之计算后样式与CSS动画的冲突
先说结论: 前几天写了几个非常简单的移动端小游戏,其中一个拼图游戏让我郁闷了一段时间.因为要获取每张图片的位置,用`<style>`标签写的样式,直接获取计算后样式再用来交换位置,结果就悲 ...
- 使用EF CodeFirst 创建数据库
EntityFramework 在VS2015添加新建项时,选择数据->ADO.NET 实体数据模型,有一下选项 来自数据库的EF设计器,这个就是我们最常用的EntityFramework设计模 ...
- 统计iOS项目的总代码行数的方法
打开终端, 用cd命令 定位到工程所在的目录,然后调用以下命名即可把每个源代码文件行数及总数统计出来: find . "(" -name "*.m" -or - ...
- BPM嵌入式流程解决方案分享
一.需求分析由于企业业务的独特性或者企业高层独特的管理思想,很多客户选择了自行开发业务系统的方式来实现独有的竞争力. 这类信息系统通常经过了多年的开发,伴随着企业的发展一直在不断优化,与企业的业务非常 ...
- Zabbix 漏洞分析
之前看到Zabbix 出现SQL注入漏洞,自己来尝试分析. PS:我没找到3.0.3版本的 Zabbix ,暂用的是zabbix 2.2.0版本,如果有问题,请大牛指点. 0x00 Zabbix简介 ...
- iOS之绘制虚线
/* ** lineFrame: 虚线的 frame ** length: 虚线中短线的宽度 ** spacing: 虚线中短线之间的间距 ** co ...