【问题标题】:Get parameter from url standard objects从 url 标准对象获取参数
【发布时间】:2023-03-14 11:19:02
【问题描述】:

我在 Opportunity 对象上创建了一个自定义按钮 (URL),它将我重定向到一个 visualforce 页面以创建一个新任务。 我正在尝试从 URL 获取参数的值,以便从机会中按填充一些值,但它不起作用。我没有使用控制器。 这是网址:

/apex/TaskPage?who_id={!Opportunity.AccountId}&what_id={!Opportunity.Id}&retURL={!Opportunity.Id}

这是我的 visualforce 页面:

<apex:page standardController="Task">
<apex:form >
    <apex:pageBlock title="New Task">
        <apex:pageBlockButtons >
            <apex:commandButton action="{!save}" value="Save"/>
        </apex:pageBlockButtons>
        <apex:pageBlockSection columns="2" title="Task Information"> 
            <apex:inputField value="{!Task.OwnerId}" id="userName" required="true"/>
            <apex:inputField value="{!Task.Status}"/> 
            <apex:inputField value="{!Task.Subject}"/>
            <apex:inputField value="{!Task.WhatId}"/>
            <apex:inputField value="{!Task.ActivityDate}"/>
            <apex:inputField value="{!Task.WhoId}"/>
            <apex:inputField value="{!Task.Priority}"/>
        </apex:pageBlockSection>
        <apex:pageBlockSection title="Description Information">
            <apex:inputField value="{!Task.Description}"/>
            <apex:inputField value="{!Task.Test__c}"/>
        </apex:pageBlockSection>
    </apex:pageBlock> 
</apex:form>

请问,谁能帮帮我? 谢谢

【问题讨论】:

    标签: javascript url salesforce visualforce urlhacks


    【解决方案1】:

    您可以使用 URL hacking 来设置值(您正在尝试这样做吗?),但这是不安全/不完整的,不推荐。 Salesforce 可以随时停止支持此功能。

    我建议你创建一个控制器扩展,读取其中的页面参数并设置字段。

    在扩展类的构造函数中可以设置字段为

    `

    public class TaskExtension {
        public Task currentTask{get; set;}
        public TaskExtension(ApexPages.StandardController stdController){
           if(currentTask == null) currentTask = new Task();
           currentTask.whoid = ApexPages.currentPage().getParameters().get('who_id');
        }
    }
    

    `

    Javascript 选项: 链接:/apex/TestVF?whatID=001i000000IsaJu&whatName=Infosys

    页面:

    `
        <apex:page standardController="Task">
        <apex:form >
            <apex:pageBlock title="New Task">
                <apex:pageBlockButtons >
                    <apex:commandButton action="{!save}" value="Save"/>
                </apex:pageBlockButtons>
                <apex:pageBlockSection columns="2" title="Task Information"> 
                    <apex:inputField value="{!Task.OwnerId}" id="userName" required="true"/>
                    <apex:inputField value="{!Task.Status}"/>  
                    <apex:inputField value="{!Task.Subject}"/>
                    <apex:inputField id="whatID" value="{!Task.WhatId}"/>
                    <script>
                        document.getElementById('{!$Component.whatID}' + '_lkid').value = '{!$CurrentPage.parameters.whatID}' ;
                        document.getElementById('{!$Component.whatID}' + '_lkold').value = '{!$CurrentPage.parameters.whatName}' ;
                        document.getElementById('{!$Component.whatID}' + '_mod').value = '1' ;
                        document.getElementById('{!$Component.whatID}').value = '{!$CurrentPage.parameters.whatName}' ; 
                    </script>
                    <apex:inputField value="{!Task.ActivityDate}"/>
                    <apex:inputField value="{!Task.WhoId}"/>
                    <apex:inputField value="{!Task.Priority}"/>
                </apex:pageBlockSection>
                <apex:pageBlockSection title="Description Information">
                    <apex:inputField value="{!Task.Description}"/>
                </apex:pageBlockSection>
            </apex:pageBlock> 
        </apex:form>
        </apex:page>
    `
    

    【讨论】:

    • 谢谢,但我不想使用控制器扩展。
    • 在我上面的答案中添加 Javascript 选项。
    【解决方案2】:

    您可以使用以下语法从 URL 参数中读取值

    {!$CurrentPage.parameters.testParam}  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-21
      • 1970-01-01
      • 2013-03-15
      • 2019-07-15
      • 1970-01-01
      • 2023-03-15
      相关资源
      最近更新 更多