Skip to main content
Use serverRender with Polarion’s rendering methods to display clickable links from rich text fields:
{
  "id": "description",
  "header": "Description",
  "type": "text",
  "bindings": "description",
  "serverRender": "$item.fields().description().render().htmlFor().forFrame()"
}
This configuration extracts HTML content (including <a> tags) from the description field and renders it as clickable links.
The .render().htmlFor().forFrame() method chain safely converts Polarion rich text fields to HTML suitable for iframe rendering, preserving links, formatting, and images.
Construct custom clickable links using HTML anchor tags in serverRender:
{
  "id": "relatedDoc",
  "header": "Related Document",
  "type": "text",
  "serverRender": "<a href='https://docs.example.com/spec-$item.fields().id().get()' target='_blank'>View Specification</a>"
}
This creates a link that opens in a new tab, incorporating the work item ID into the URL.
Opening links in the same window (target='_self') navigates away from RISKSHEET, losing unsaved changes. Always use target='_blank' to open links in new tabs.
Create clickable links to related work items using Polarion’s URL structure:
{
  "id": "requirementLink",
  "header": "Requirement",
  "type": "text",
  "bindings": "requirement",
  "serverRender": "<a href='/polarion/#/project/$item.getProject().getId()/workitem?id=$item.fields().get(\"requirement\").get()' target='_blank'>$item.fields().get(\"requirement\").get()</a>"
}
For linking to Polarion work items, prefer itemLink or multiItemLink column types. They provide built-in link rendering, autocomplete, and validation. Use custom serverRender links only for external resources or special formatting needs.
Mix static text with clickable links for richer cell content:
{
  "id": "verification",
  "header": "Verification",
  "type": "text",
  "serverRender": "Status: $item.fields().status().render().htmlFor().forFrame() | <a href='/polarion/#/project/$item.getProject().getId()/workitem?id=$item.fields().id().get()' target='_blank'>Open Item</a>"
}
This displays both the status value and an “Open Item” link in the same cell. Apply CSS styling to links using inline styles or CSS classes:
{
  "id": "externalLink",
  "header": "External Reference",
  "type": "text",
  "serverRender": "<a href='$item.fields().get(\"externalUrl\").get()' target='_blank' style='color: #0066cc; text-decoration: underline; font-weight: 500;'>View External Doc </a>"
}
Use Material Design icons (“) in link text to visually indicate external links. RISKSHEET supports the pymdownx.emoji extension for icon rendering.
ScenarioRecommended Approach
Link to Polarion work itemUse itemLink or multiItemLink column type
Display links from rich text fieldserverRender with .render().htmlFor().forFrame()
Link to external URLserverRender with <a href='...' target='_blank'>
Link with custom formatting/iconsserverRender with inline CSS and Material icons
Multiple links in one cellserverRender with multiple <a> tags separated by <br>

Handle Null Values

Prevent broken links when field values are empty:
{
  "id": "documentLink",
  "header": "Document",
  "type": "text",
  "serverRender": "#if($item.fields().get(\"docUrl\").get())<a href='$item.fields().get(\"docUrl\").get()' target='_blank'>View Document</a>#else<span style='color: #999;'>No document</span>#end"
}
This Velocity template checks for null values before rendering the link.
Columns using serverRender are automatically marked as read-only. Users cannot edit cell content directly. To make the underlying field editable, add a separate column without serverRender.

Common Pitfalls

When using quotes inside serverRender strings, escape them with backslashes: \"field\". Incorrect escaping breaks the JSON configuration.
serverRender executes on the server for every visible row. For risksheets with hundreds of rows, complex rendering logic can slow page load. Consider using client-side cellDecorators for performance-critical scenarios.
When users copy cells with clickable links, the clipboard contains the rendered HTML. Pasting into Excel or plain text editors may show HTML tags. Use cellDecorators if you need to preserve plain text for copy/paste.

Verification

After configuring clickable links:
  1. Open your RISKSHEET
  2. Locate columns with serverRender configuration
  3. Click the rendered links to verify they open correctly
  4. Check that target='_blank' opens links in new tabs
  5. Verify null/empty values display gracefully without broken links
You should see properly formatted, clickable hyperlinks that open in new browser tabs, with appropriate fallback display for empty values.

See Also

KB ArticlesSupport TicketsSource Code
  • PolarionAppConfigManager.java
  • AppConfig.ts
  • CellEditorFormatter.ts
  • RiskSheetContextMenu.ts
  • risksheet.json