Stripes中布局重用的不同方法有哪些

时间:2012-01-21 16:33:14

标签: java inheritance layout jstl stripes

在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变量可以是

  • 使用JSTL <c:set var="foo" value="bar" />
  • 定义
  • 使用<c:out value="${foo}">
  • 输出

所有这些方式如何相互关联,每个方法都应该使用?

1 个答案:

答案 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变量,没有别的
    • 这是一种将字符串as-it-it从模板传递到页面
    • 的方法
  • 使用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; &安培; '“

所有评论和其他解释都非常感谢!