Вопрос

I was wondering if its possible to render custom html inside of column tag, that is part of display table tag.

for example, i want my colum to have some dropdown list inside?

Using plain html that would be like:

<table>
...
<tr>
<td>
<select>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select> 
</td>
</tr>
</table>

is it possible to embed that select tag in display column? This is the demo of display column

<display:column property="${displayElem.name}" escapeXml="true" sortable="true" titleKey="errorHandler.${displayElem.name}" style="width: ${displayElem.length}" />

EDIT: When i try to remove property inside display column i get only html source code inside my table cell and not the html element rendering of that code.

 <display:column escapeXml="true"
       sortable="true" titleKey="errorHandler.${displayElem.name}"
       style="width: ${displayElem.length}" >
     <select>
       <option value="volvo">Volvo</option>
       <option value="saab">Saab</option>
       <option value="mercedes">Mercedes</option>
       <option value="audi">Audi</option>
     </select> 
</display:column>

SOLUTION: removing escapeXml="true" attribute solved problem

<display:column 
       sortable="true" titleKey="errorHandler.${displayElem.name}"
       style="width: ${displayElem.length}" >
     <select>
       <option value="volvo">Volvo</option>
       <option value="saab">Saab</option>
       <option value="mercedes">Mercedes</option>
       <option value="audi">Audi</option>
     </select> 
</display:column>

SOLUTION 2 for ultimate control

create class, extend it with decorator class and use it the display table tags

public class YourDecorationClass extends TableDecorator {

    public String getAction() {
        String code = "";

        code = "<select>" +
                "<option value='volvo'>Volvo</option>" +
                "<option value='volvo'>Saab</option>" +
                "<option value='volvo_RETRY'>Mercedes_RETRY</option>" +
                "<option value='audi'>Audi</option>";

        return code;
    }
}

and use decorator parameter in the display table tag

decorator="com.yourpackage.util.table.YourDecorationClass"

and of course remove escapeXml="true" from display column tag.

Это было полезно?

Решение 2

Yes, of course it's possible. The documentation of the tag says:

Displays a property of a row object inside a table. MUST be nested inside of a Table tag. The value displayed will be the results of a decorator (if any); else the property named by the 'property' attribute; or if the 'property' attribute is null, then the results of evaluating the JSP body of the tag.

(emphasis mine)

Другие советы

You can set HTML string in Object's property. For Example in your case you can set HTML in ${displayElem.name}. It will generate a Combobox in Grid.

setName("<select><option value=\"JS\">John Seam<option></select>");
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top