做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使用以及相关的疑惑的更多相关文章

  1. salesforce 零基础学习(十九)Permission sets 讲解及设置

    Permission sets以及Profile是常见的设置访问权限的方式. Profile规则为'who see what'.通过Profile可以将一类的用户设置相同的访问权限.对于有着相同Pro ...

  2. salesforce零基础学习(九十九)Git 在salesforce项目中的应用(vs code篇)

    本篇参考: https://code.visualstudio.com/docs/editor/versioncontrol https://git-scm.com/doc https://git-s ...

  3. salesforce 零基础学习(十八)WorkFlow介绍及用法

    说起workflow大家肯定都不陌生,这里简单介绍一下salesforce中什么情况下使用workflow. 当你分配许多任务,定期发送电子邮件,记录修改时,可以通过自动配置workflow来完成以上 ...

  4. salesforce 零基础学习(十六)Validation Rules & Date/time

    上一篇介绍的内容为Formula,其中的Date/time部分未指出,此篇主要介绍Date/time部分以及Validation rules. 本篇参考PDF: Date/time:https://r ...

  5. salesforce零基础学习(九十九)Salesforce Data Skew(数据倾斜)

    本篇参考: https://developer.salesforce.com/blogs/engineering/2013/04/managing-lookup-skew-to-avoid-recor ...

  6. salesforce零基础学习(八十九)使用 input type=file 以及RemoteAction方式上传附件

    在classic环境中,salesforce提供了<apex:inputFile>标签用来实现附件的上传以及内容获取.salesforce 零基础学习(二十四)解析csv格式内容中有类似的 ...

  7. salesforce 零基础学习(五十二)Trigger使用篇(二)

    第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...

  8. salesforce零基础学习(八十)使用autoComplete 输入内容自动联想结果以及去重实现

    项目中,我们有时候会需要实现自动联想功能,比如我们想输入用户或者联系人名称,去联想出系统中有的相关的用户和联系人,当点击以后获取相关的邮箱或者其他信息等等.这种情况下可以使用jquery ui中的au ...

  9. salesforce零基础学习(一百零五)Change Data Capture

    本篇参考: https://developer.salesforce.com/docs/atlas.en-us.232.0.api_streaming.meta/api_streaming/using ...

  10. salesforce零基础学习(八十七)Apex 中Picklist类型通过Control 字段值获取Dependent List 值

    注:本篇解决方案内容实现转自:http://mysalesforceescapade.blogspot.com/2015/03/getting-dependent-picklist-values-fr ...

随机推荐

  1. 01.SQLServer性能优化之---水平分库扩展

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 第一次引入文件组的概念:http://www.cnblogs.com/dunitian/ ...

  2. 【.net 深呼吸】细说CodeDom(8):分支与循环

    有人会问,为啥 CodeDom 不会生成 switch 语句,为啥没生成 while 语句之类.要注意,CodeDom只关心代码逻辑,而不是语法,语法是给写代码的人用的.如果用.net的“反编译”工具 ...

  3. 记一次SQLServer的分页优化兼谈谈使用Row_Number()分页存在的问题

    最近有项目反应,在服务器CPU使用较高的时候,我们的事件查询页面非常的慢,查询几条记录竟然要4分钟甚至更长,而且在翻第二页的时候也是要这么多的时间,这肯定是不能接受的,也是让现场用SQLServerP ...

  4. 漫扯:从polling到Websocket

    Http被设计成了一个单向的通信的协议,即客户端发起一个request,然后服务器回应一个response.这让服务器很为恼火:我特么才是老大,我居然不能给小弟发消息... 轮询 老大发火了,小弟们自 ...

  5. Android中手机录屏并转换GIF的两种方式

    之前在博文中为了更好的给大家演示APP的实现效果,本人了解学习了几种给手机录屏的方法,今天就给大家介绍两种我个人用的比较舒服的两种方法: (1)配置adb环境后,使用cmd命令将手机界面操作演示存为视 ...

  6. .NET平台开源项目速览(18)C#平台JSON实体类生成器JSON C# Class Generator

    去年,我在一篇文章用原始方法解析复杂字符串,json一定要用JsonMapper么?中介绍了简单的JSON解析的问题,那种方法在当时的环境是非常方便的,因为不需要生成实体类,结构很容易解析.但随着业务 ...

  7. redis集成到Springmvc中及使用实例

    redis是现在主流的缓存工具了,因为使用简单.高效且对服务器要求较小,用于大数据量下的缓存 spring也提供了对redis的支持: org.springframework.data.redis.c ...

  8. spring注解源码分析--how does autowired works?

    1. 背景 注解可以减少代码的开发量,spring提供了丰富的注解功能.我们可能会被问到,spring的注解到底是什么触发的呢?今天以spring最常使用的一个注解autowired来跟踪代码,进行d ...

  9. 2016/12/28_javascript

    今天学习的主要内容: javascript: 1.if语句,switch语句,while循环以及for循环: 1)if语句 if(boolean){}; if(boolean){} else if(b ...

  10. 品牌营销:不要Beat,要逼格!

             品牌营销:不要Beat,要逼格! 奥美的创始人大卫·奥格威说,广告营销应当是"具有风度的推销产品".而当下的营销手段,"风度"早已被抛之脑后, ...