在Java的Stripes演示框架中,渲染模板和向模板提供代码部分可以通过多种方式完成:
可以使用
在模板中定义代码部分<stripes:layout-component name="foo" />
${foo}
您可以提供这些组件
<stripes:layout-component name="foo">bar</stripes:layout-component>
<stripes:layout-render ...></stripes:layout-render>
<stripes:layout-render ... foo="bar">
为了使这个想法更加复杂,JSTL变量可以是
<c:set var="foo" value="bar" />
<c:out value="${foo}">
所有这些方式如何相互关联,每个方法都应该使用?
答案 0 :(得分:0)
所以,我做了一些关于哪个定义适用于哪种输出方式的测试
测试结果:
parametrized layout-component <-- Outputted with
layout-render OK FAIL
layout-component OK OK
^
Defined with
我还使用<c:out>
和<c:set>
判决:
layout-component
输出的变量无法使用任何ELSE定义但layout-component
layout-render
定义的变量似乎只是设置为JSTL变量,没有别的
layout-component
提供变量也定义了JSTL变量
layout-component
输出之前无法更改layout-component
的好处是它可以跨多个模板继承
home.jsp
呈现std-tmpl.jsp
,呈现base.jsp
。在这种情况下,home.jsp
可以提供变量设置layout-component: foo
,并在base.jsp
要输出不应包含HTML的变量,应始终使用
<c:out value="${foo}" />
这将使html转义以下字符:&lt; &GT; &安培; '“
所有评论和其他解释都非常感谢!