private String html(TableFacade tableFacade) {

    // set the column properties
    tableFacade.setColumnProperties(
        "versionName",
        "ruleName",
        "ruleExpression",
        "executeOnPlaceHolder",
        "actionTypePlaceHolder",
        "actionSummaryPlaceHolder",
        "link");

    HtmlTable table = (HtmlTable) tableFacade.getTable();
    table.setCaption("Rules");
    table.getTableRenderer().setWidth("900px");

    HtmlRow row = table.getRow();

    HtmlColumn versionName = row.getColumn("versionName");
    versionName.setTitle("CRF Version");

    HtmlColumn ruleName = row.getColumn("ruleName");
    ruleName.setTitle("Rule Name");

    HtmlColumn career = row.getColumn("ruleExpression");
    career.setWidth("100px");
    career.setTitle("Expression");

    HtmlColumn executeOn = row.getColumn("executeOnPlaceHolder");
    executeOn.setSortable(false);
    executeOn.setFilterable(false);
    executeOn.setTitle("Execute On");
    executeOn
        .getCellRenderer()
        .setCellEditor(
            new CellEditor() {
              @SuppressWarnings("unchecked")
              public Object getValue(Object item, String property, int rowcount) {
                String value = "";
                List<RuleActionBean> ruleActions =
                    (List<RuleActionBean>)
                        new BasicCellEditor().getValue(item, "actions", rowcount);
                for (int i = 0; i < ruleActions.size(); i++) {
                  value += ruleActions.get(i).getExpressionEvaluatesTo();
                  // Do not add horizontal line after last Summary
                  if (i != ruleActions.size() - 1) {
                    value += "<hr>";
                  }
                }
                return value;
              }
            });

    HtmlColumn actionTypePlaceHolder = row.getColumn("actionTypePlaceHolder");
    actionTypePlaceHolder.setSortable(false);
    actionTypePlaceHolder.setFilterable(false);
    actionTypePlaceHolder.setTitle("Action Type");
    actionTypePlaceHolder
        .getCellRenderer()
        .setCellEditor(
            new CellEditor() {
              @SuppressWarnings("unchecked")
              public Object getValue(Object item, String property, int rowcount) {
                String value = "";
                List<RuleActionBean> ruleActions =
                    (List<RuleActionBean>)
                        new BasicCellEditor().getValue(item, "actions", rowcount);
                for (int i = 0; i < ruleActions.size(); i++) {
                  value += ruleActions.get(i).getActionType().name();
                  // Do not add horizontal line after last Summary
                  if (i != ruleActions.size() - 1) {
                    value += "<hr>";
                  }
                }
                return value;
              }
            });

    HtmlColumn actionSummaryPlaceHolder = row.getColumn("actionSummaryPlaceHolder");
    actionSummaryPlaceHolder.setSortable(false);
    actionSummaryPlaceHolder.setFilterable(false);
    actionSummaryPlaceHolder.setTitle("Action Summary");
    actionSummaryPlaceHolder
        .getCellRenderer()
        .setCellEditor(
            new CellEditor() {
              @SuppressWarnings("unchecked")
              public Object getValue(Object item, String property, int rowcount) {
                String value = "";
                List<RuleActionBean> ruleActions =
                    (List<RuleActionBean>)
                        new BasicCellEditor().getValue(item, "actions", rowcount);
                for (int i = 0; i < ruleActions.size(); i++) {
                  value += ruleActions.get(i).getSummary();
                  // Do not add horizontal line after last Summary
                  if (i != ruleActions.size() - 1) {
                    value += "<hr>";
                  }
                }
                return value;
              }
            });

    HtmlColumn link = row.getColumn("link");
    link.setSortable(false);
    link.setFilterable(false);
    link.setTitle("Action");
    link.getCellRenderer()
        .setCellEditor(
            new CellEditor() {
              @SuppressWarnings("unchecked")
              public Object getValue(Object item, String property, int rowcount) {
                String value =
                    (String) new BasicCellEditor().getValue(item, "ruleSetRuleId", rowcount);
                HtmlBuilder html = new HtmlBuilder();
                html.a()
                    .href()
                    .quote()
                    .append(request.getContextPath() + "/someAction?ruleSetRuleId=" + value)
                    .quote()
                    .close();
                html.img().name("bt_View1").src("images/bt_View.gif").border("0").end();
                html.aEnd();
                return html.toString();
              }
            });

    return tableFacade.render(); // Return the Html.
  }