如何从自定义组件控制器中获取 Visualforce 页面控制器的值?

hro*_*ert 5 salesforce visualforce apex-code

我正在尝试开发一个 Visualforce 自定义组件,它是一个实体选择器。此自定义组件显示有助于浏览某些记录的 UI。可以选择一条记录,我想从组件或其控制器外部获取它。

我已经查看了带有assignTo错误的标准salesforce绑定,它不是双向的......

希望有人可以帮助我..谢谢

lne*_*ger 5

您是否将对象传递给组件?对象是通过引用传递的,所以如果你的组件有一个接受一个对象并对它做一些事情的属性,你的外部页面控制器将能够访问更改后的值。

如果您要传入一个 shell 对象,即。如果您的 UI 允许用户选择帐户。

Class SelectedAccount
{
  public Account theAccount {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

成分:

<apex:component controller="ComponentController">
   <apex:attribute type="SelectedAccount" name="userSelectedAccount" description="Selected Account" assignTo="{!selectedAccount}"
</apex:component>
Run Code Online (Sandbox Code Playgroud)

组件控制器:

public class ComponentController
{
  public selectedAccount;

  public void ComponentController(){}

  public PageReference selectAccountFromUI(Account selected)
  {
    selectedAccount.theAccount = selected;

    return null;
  }
}
Run Code Online (Sandbox Code Playgroud)

使用组件的页面:

<c:MyAccountComponent userSelectedAccount="{!instanceOfSelectedAccount}"/>
Run Code Online (Sandbox Code Playgroud)

这将允许您将用户选择的帐户分配到外部控制器拥有的包装器对象的实例中。然后你可以参考:

instanceOfSelectedAccount.theAccount
Run Code Online (Sandbox Code Playgroud)

从您的主要 Visualforce Pages 控制器。