Book Image

Visualforce Development Cookbook

By : Keir Bowden
Book Image

Visualforce Development Cookbook

By: Keir Bowden

Overview of this book

Visualforce, in conjunction with Apex, makes it easy to develop sophisticated, custom UIs for Force.com desktop and mobile apps without having to write thousands of lines of code and markup. The "Dynamic Binding" feature of Visualforce lets you develop generic Visualforce pages to display information related to the records without necessarily knowing which data fields to show. This is accomplished through a formula-like syntax, which makes it simple to manage even a complex hierarchy of records. "Visualforce Development Cookbook" provides solutions for a variety of challenges faced by Salesforce developers and demonstrates how easy it is to build rich, interactive pages using Visualforce. Whether you are looking to make a minor addition to the standard page functionality or override it completely, this book will provide you with the required help throughout. "Visualforce Development Cookbook" starts with explaining the simple utilities and builds up to advanced techniques for data visualization and reuse of functionality. This book contains recipes that cover various topics like creating multiple records from a single page, visualizing data as charts, using JavaScript to enhance client-side functionality, building a public website and making data available to a mobile device. "Visualforce Development Cookbook" provides lots of practical examples to enhance and extend the Salesforce user interface.
Table of Contents (16 chapters)
Visualforce Development Cookbook
Credits
About the Author
About the Reviewers
www.PacktPub.com
Preface
Index

Reacting to URL parameters


URL parameters are used to pass information to Visualforce pages that the page or controller can then react to. For example, setting a record ID parameter into the URL for a page that uses a standard controller causes the controller to retrieve the record from the database and make it available to the page.

In this recipe we will create a Visualforce search page to retrieve all accounts where the name contains a string entered by the user. If the parameter name is present in the page URL, a search will be run against the supplied value prior to the page being rendered for the first time.

Getting ready

This recipe makes use of a custom controller, so this will need to be created before the Visualforce page.

How to do it…

  1. Navigate to the Apex Classes setup page by clicking on Your Name | Setup | Develop | Apex Classes.

  2. Click on the New button.

  3. Paste the contents of the SearchFromURLController.cls Apex class from the code download into the Apex Class area.

  4. Click on the Save button.

  5. Next, create the Visualforce page by navigating to the Visualforce setup page by clicking on Your Name | Setup | Develop | Pages.

  6. Click on the New button.

  7. Enter SearchFromURL in the Label field.

  8. Accept the default SearchFromURL that is automatically generated for the Name field.

  9. Paste the contents of the SearchFromURL.page file from the code download into the Visualforce Markup area.

  10. Click on the Save button to save the page.

  11. Navigate to the Visualforce setup page by clicking on Your Name | Setup | Develop | Pages.

  12. Locate the entry for the SearchFromURL page and click on the Security link.

  13. On the resulting page, select which profiles should have access and click on the Save button.

How it works…

Opening the following URL in your browser retrieves all accounts where the name field contains the text ni: https://<instance>/apex/SearchFromURL?name=ni.

Here, <instance> is the Salesforce instance specific to your organization, for example, na6.salesforce.com.

The constructor of the custom controller attempts to extract a value for the parameter Name from the page URL, and if one has been supplied, executes the search.

public SearchFromURLController()
{
  searched=false;
  String nameStr=
    ApexPages.currentPage().getParameters().get('name');
  if (null!=nameStr)
  {
      name=nameStr;
      executeSearch();
  }
}

Note

Note that the constructor also sets the value retrieved from the URL into the Name property. This property is bound to the input field on the page, and causes the input field to be prepopulated with the value retrieved from the URL when the page is first rendered.

The action method that executes the search is as follows:

public PageReference executeSearch()
{
  searched=true;
  String searchStr='%' + name + '%';
  accounts=[select id, Name, Industry, Type from Account where name LIKE :searchStr];
    
  return null;
}

Tip

Note that searchStr is constructed by concatenating the search term with the % wildcard characters; this allows the user to enter a fragment of text rather than full words. Also, note that the concatenation takes place outside the SOQL query and the resulting variable is included as a bind expression in the query. If the concatenation takes place directly in the SOQL query, no matches will be found.

See also

  • The Passing parameters between Visualforce pages recipe in this chapter shows how URL parameters can be used to maintain the state across pages that do not share the same controller.