Lab B.1: Hello World
- Goals
-
- Set up a development environment
- Create a JSP page
- Visit the page in the platform
- Prerequisites
-
- Read the Application Architecture overview.
Overview of JSP Pages
A Java Server Page (JSP) is a file that contains a mixture of Java code and HTML. A JSP page is compiled to a Java Class, and must therefore have a name that qualifies as a Java class name (so no spaces, underscores, or punctuation marks). The name must also have a .jsp extension.
And by using Static Resources, the JSP pages can incorporate CSS and JavaScript libraries to give you complete control of their look and feel.
The Many Uses of JSP Pages
Objects contain your data, but you work with your data and interact with the platform using JSP Pages. In fact, the platform itself is mostly a giant collection of JSP Pages that you use to interact with the underlying database.
Once you know how to create JSP Pages, you will be able to do extensive front-end customization for your users:
- By visiting the page URL
- Every page has a URL of the form: https://{yourDomain}/networking/pages/xyz.jsp
- You link to that URL from anywhere. As long as the user is logged in, they can see the page.
- (If they are not already logged in, the platform prompts them for their login credentials.)
- As a Web Tab
- In the normal course of events, the platform shows tabs for the high-level objects the user will interact with. Clicking on one opens displays records in the object. You can also use a JSP Page as a Web Tab. When the user clicks on it, the Page opens as a platform tab.
- As a Custom Lookup
- When users go to a standard page, they see a table that shows the Record Locator defined for the object they are referencing. (For example, the Record Locator when looking up a Company object might show the Company name and location.) But you can also define a JSP Page for that purpose, and use it to display the information the user needs displaying graphics, styling, and data you choose.
Coding Patterns
There are only a few patterns you need to know to do some serious work with JSP pages:
Execute code Insert data into the HTML stream <% ... code ... %> <%= variable %>
And:
Conditional display of HTML Loops for repeated HTML <% if (...) { %>
... HTML ...
<% } %><% for (item:List) { %>
... HTML ...
<% } %>
Of course, you can loop using Parameters Class iterators, or any other looping construct that Java allows.
Accessing Incoming Parameters
To get all of the parameters available in the request object, and their values:
<% String[] params = request.getParameterValues(); for (int i=0; i<params.length; i++) { String paramName = params[i]; String paramValue = request.getParameter( paramName ); } %>
To obtain a record identifier from a request object sent by the platform:
- With the object ID and record ID, use the getRecord API to retrieve the record.
<% String object_id = request.getParameter("object_id"); String record_id = request.getParameter("record_id"); %>
To obtain a record identifier from a request object sent by a Custom Action button:
- This code gets the record IDs and uses the searchRecords API to retrieve the records:
<% // Get the object ID and the comma separated list of record IDs String object_id = request.getParameter("object_id"); String selectedRecords = request.getParameter("selectedRecords"); // Break the comma-separated list into record IDs. // Join them with "OR" operands for use when searching for the records String filterCriteria = ""; if (selectedRecords != null) { StringTokenizer st = new StringTokenizer(selectedRecords,","); while (st.hasMoreTokens()) { if ( !"".equals(filterCriteria.trim())) { // Criteria string isn't empty, and we're adding another expression // Prefix the new expression with a boolean OR operator filterCriteria += " OR " } filterCriteria += "record_id = "+ st.nextToken(); } } // Use the filter criteria to fetch the selected records // Here, we ask for the record_id and name fields Result results; results = Functions.searchRecords(object_id , "record_id,name", filterCriteria); int resultCode = results.getCode(); if (resultCode < 0) { // Error occurred } else if (resultCode == 0) { // No records found. (This situation should never occur.) } else { // Records retrieved successfully // Process them here ParametersIterator iterator = results.getIterator(); while(iterator.hasNext()) { Parameters params = iterator.next(); String recordID = params.get("record_id"); String recordName = params.get("name"); // Take additional action according to your business logic } } %>
To access record IDs for multiple records parameter:
<% // Get the object ID and a comma-separated list of record IDs. // (Or a single record ID, if only one record was returned) String object_id = request.getParameter("object_id"); String selectedRecords = request.getParameter("selectedRecords"); // Fetch record details using the searchRecords function %>
Exercise
Set up a development environment
- In the navigation pane, click Setup.
- If you don't see an entry called Develop, then:
- Set up Developer Privileges
- Log in again
Create a JSP Page
Note: If this is the first development activity to occur, you may see an error message like the following at the top of the screen:
To create a new class, page, or execute Java code in Data Policies, namespace needs to be set in Company Information. Click here ...
The link takes you to the Developer Configuration page, where you can specify your organization's namespace--typically, the company name or an abbreviation of it that corresponds to the company URL. (The lab exercises use "demo".)
- Enter the page name: HelloWorld.jsp
Note: It is necessary to add the .jsp extension when specifying the page name. - Add content for the page:
<h1 align="center">Hello World!</h1>
- Click [Save]
Visit the page to confirm that it exists
- In your web browser, visit https://{yourDomain}/networking/pages/HelloWorld.jsp, substituting your platform address for "{yourDomain}".
- The page you created appears.