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. }