不执行作为String检索的JSP标记

时间:2012-01-24 12:38:26

标签: jsp jsp-tags

我有Java类负责渲染一些html元素,我们为它们创建了一些预定义的标签。

public class StartDateField {

private static StartDateField object;

private StartDateField(){}

public static StartDateField getInstance(){

    if(object == null){
        object = new StartDateField();
    }
    return object;
}

public String render(){
    String field = "<field:text name='first_name' size='65' maxlen='63' style='field' />";
    return field;
}

}

然后我尝试在JSP标记中调用该render方法(它也导入到上面的类中)

<td colspan="2">
<%=StartDateField.getInstance(SUBpagebean).render()%>
</td>

但它什么都没显示。当我去查看源代码时,它显示返回的文本而不是执行标记。这是怎么造成的,我该如何解决?

1 个答案:

答案 0 :(得分:1)

<%= someExpression() %>表示:评估Java表达式someExpression(),并将其结果写入HTTP响应编写器。显然,您正在将<field:text name='first_name' size='65' maxlen='63' style='field' />直接写入响应。

JSP标记必须位于要评估的JSP的静态源代码中。

请注意,JSTL是标准的标准库。 <field:text>是一个自定义JSP标记。它不是JSTL标签。