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 ...
随机推荐
- 自定义基于 VLC 的视频播放器
前言(蛋疼的背景故事) 前段时间,接了一个小项目,有个需求是要在系统待机一段时间以后,循环播放 MV(类似于 Windows 系统的屏幕保护). 听到这个需求,我首先想到的是 MediaPlayer ...
- ASP.NET Core 之 Identity 入门(一)
前言 在 ASP.NET Core 中,仍然沿用了 ASP.NET里面的 Identity 组件库,负责对用户的身份进行认证,总体来说的话,没有MVC 5 里面那么复杂,因为在MVC 5里面引入了OW ...
- 【SQLServer】【恢复挂起的解决方案】附加文件时候的提示“无法重新生成日志,原因是数据库关闭时存在打开的事务/用户,该数据库没有检查点或者该数据库是只读的。 ”【数据库恢复】
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 先贴错误: 吐槽一下: 进入正题: 新建一个同名数据库 停止MSSQL服务 替换数据库文 ...
- JavaScript中String对象的方法介绍
1.字符方法 1.1 charAt() 方法,返回字符串中指定位置的字符. var question = "Do you like JavaScript?"; alert(ques ...
- 深入理解DOM节点操作
× 目录 [1]创建节点 [2]插入节点 [3]移除节点[4]替换节点[5]复制节点 前面的话 一般地,提起操作会想到“增删改查”这四个字,而DOM节点操作也类似地对应于此,接下来将详细介绍DOM的节 ...
- firebug不能加载JS文件 ,无法进行JS脚本调试
提示: 本页面不包含 Javascript 如果 <script> 标签有 "type" 属性,其值应为 "text/javascript" 或者& ...
- Concurrency
<Concurrency>:http://docs.oracle.com/javase/tutorial/essential/concurrency/index.html <Java ...
- test
http://img.ivsky.com/img/bizhi/pic/201009/07/fangaoyouhua-015.jpghttp://desk.fd.zol-img.com.cn/t_s16 ...
- ASP.NET 5运行时升级到Beta5
在Visual Studio 2015 RTM和Windows 10正式发布之前,微软把开源.NET升级到了beta5,带来了一些增强和改变.和Visual Studio 2015 RC一起安装的AS ...
- Linux环境下shell和vim中乱码原因及消除办法
shell和vim中乱码原因及消除办法 作者:Jack47 在Linux下开发,经常遇到乱码问题:shell或者vim中显示不了中文,或者能够显示,但不能输入中文.每次都是上网去搜,或者同事告诉我一些 ...