<display:column> </display:column>中的自定义html

时间:2013-11-26 08:55:55

标签: java html jsp jstl displaytag

我想知道是否可以在列标记内部呈现自定义html,这是显示表标记的一部分。

例如,我希望我的colum里面有一些下拉列表?

使用简单的html,如:

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

是否可以在显示栏中嵌入选择标签?这是显示栏

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

编辑:当我尝试删除显示列中的属性时,我只获取表格单元格中的html源代码,而不是该代码的html元素呈现。

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

解决方案:删除escapeXml =“true”属性解决了问题

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

最终控制的解决方案2

创建类,使用装饰器类扩展它并使用显示表标签

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

并在display table标签中使用decorator参数

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

当然从显示列标记中删除escapeXml =“true”。

2 个答案:

答案 0 :(得分:4)

您可以在Object的属性中设置HTML字符串。例如,在您的情况下,您可以在$ {displayElem.name}中设置HTML。它将在Grid中生成一个Combobox。

setName("<select><option value=\"JS\">John Seam<option></select>");

答案 1 :(得分:1)

是的,当然有可能。 documentation of the tag说:

  

显示表内行对象的属性。必须嵌套在Table标签内。显示的值将是装饰器的结果(如果有的话);否则由'property'属性命名的属性;或者如果'property'属性为null,则然后是评估标记的JSP主体的结果

(强调我的)