zoukankan      html  css  js  c++  java
  • 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举例:

     1 <apex:page >
     2     <apex:pageBlock title="param 的format用法">
     3         <div >
     4             对日期类型进行格式转换输入:<br/>
     5             转换前的日期格式:
     6             <apex:outputText value="{!NOW()}"/><br/>
     7             转换后的日期格式:
     8             <apex:outputText value="{0,date,YYYY-MM-dd HH:mm:ss}">
     9                 <apex:param value="{!NOW()}"/>
    10             </apex:outputText>
    11         </div>
    12         <div>
    13             对普通类型进行相关规则的关联:eg: 用户名  -  别名<br/>
    14             <apex:outputText value="{0} - {1}">
    15                 <apex:param value="{!$User.Username}"/>
    16                 <apex:param value="{!$User.Alias}"/>
    17             </apex:outputText>
    18         </div>
    19         <div>
    20             对number类型进行相关操作:
    21             <apex:outputText value="{0,number,000,000,000.00}">
    22                 <apex:param value="{!NOW() - $System.OriginDateTime}"/>
    23             </apex:outputText>
    24         </div>
    25     </apex:pageBlock>
    26 </apex:page>

    显示效果:

    二.传递参数

     传递参数主要以apex:commandButton进行介绍。此标签绑定一个action,设置value以后便可访问controller层中的相关方法,通过apex:param作为子标签便可以在此方法中设置相关参数:

    错误demo:

    TestActionFunctionController层:

     1 public with sharing class TestActionFunctionController {
     2     public String param{get;set;}
     3     
     4     public PageReference redirectToBlankPage() {
     5         system.debug('=============param : ' + param);
     6         PageReference ref = new PageReference('/apex/detailGoodsTotal');
     7         //ref.setRedirect(true);
     8         //return ref;
     9         return Page.detailGoodsTotal;
    10     }
    11 }

     Page页--TestActionFunctionPage:此页面用于显示跳转按钮

    1 <apex:page controller="TestActionFunctionController">
    2 <apex:form >
    3     <apex:commandButton action="{!redirectToBlankPage}" value="通过commandButton赋值param并跳转到空白页">
    4         <apex:param name="param" value="test param2" assignTo="{!param}"/>
    5     </apex:commandButton>
    6 </apex:form>
    7 </apex:page>

    Page页--detailGoodsTotal.page:空白跳转页

    1 <apex:page controller="TestActionFunctionController">
    2 blank page
    3 </apex:page>

    此种方式出现两个问题:

     首先:param传递到后台是null。此种方式原因为为commandButton没有添加reRender属性,只需要添加reRender属性即可

    正确的Page页--TestActionFunctionPage

    1 <apex:page controller="TestActionFunctionController">
    2 <apex:form >
    3     <apex:commandButton action="{!redirectToBlankPage}" value="通过commandButton赋值param并跳转到空白页" reRender="x">
    4         <apex:param name="param" value="test param2" assignTo="{!param}"/>
    5     </apex:commandButton>
    6     <apex:pageBlock id="x" rendered="false"></apex:pageBlock>
    7 </apex:form>
    8 </apex:page>

    第二个问题:

    此种方式原因为两个Page共用了一个Controller,如果跳转时需要重定向,即设置pageRef.setRedirect(true);

    正确的Controller:

     1 public with sharing class TestActionFunctionController {
     2     public String param{get;set;}
     3     
     4     public PageReference redirectToBlankPage() {
     5         system.debug('=============param : ' + param);
     6         PageReference ref = new PageReference('/apex/detailGoodsTotal');
     7         ref.setRedirect(true);
     8         return ref;
     9     }
    10 }

    总结:此篇主要讲了apex:param的相关使用方法以及碰到的一点问题,至于为什么用reRender和为什么setRedirect(即转发和重定向的选择)这两个还是不懂原理,希望懂得大神可以留言解惑,不懂的欢迎留言。

  • 相关阅读:
    零售定价(最终价格计算)(三)
    SAP数据表(一)商品表
    BizTalk 2006 R2 如何实现EDI报文的接收处理
    Simulate a Windows Service using ASP.NET to run scheduled jobs
    看曾士强评胡雪岩
    Smart Client Software Factory 初试
    Asp.net Dynamic Data之四定义字段的显示/编辑模板和自定义验证逻辑
    To set a 64bit mode IIS installation to 32bit mode
    集中日志查询平台方案(Draft)
    .net开发框架比较
  • 原文地址:https://www.cnblogs.com/zero-zyq/p/6225287.html
Copyright © 2011-2022 走看看