如何将列表作为参数从一个JSP传递到Struts 2中包含的JSP?

如何将列表作为参数从一个JSP传递到Struts 2中包含的JSP?,jsp,struts2,tiles,struts-tags,valuestack,Jsp,Struts2,Tiles,Struts Tags,Valuestack,假设您希望下面的JSP代码片段位于多个页面中,其中唯一不同的是传递给它的列表(xxx) 我的第一个想法是将它放在myFragment.jsp中,在其他页面中使用s:include来包含它,并将列表作为s:param传递,如: 问题是似乎只传递字符串,所以上面的代码不起作用 我还尝试使用${param.xxx}(并尝试将myParam放入迭代器,但运气不佳 问题: 正确的方法是什么 对于这种情况,如果您希望通过将公共代码重构到统一的位置来消除JSP中的代码重复,是否有更优雅的解决方案

假设您希望下面的JSP代码片段位于多个页面中,其中唯一不同的是传递给它的列表(
xxx


我的第一个想法是将它放在
myFragment.jsp
中,在其他页面中使用
s:include
来包含它,并将列表作为
s:param
传递,如:


问题是
似乎只传递字符串,所以上面的代码不起作用

我还尝试使用
${param.xxx}
(并尝试将
myParam
放入迭代器,但运气不佳

问题:

  • 正确的方法是什么

  • 对于这种情况,如果您希望通过将公共代码重构到统一的位置来消除JSP中的代码重复,是否有更优雅的解决方案

  • 编辑(示例):

    • 例如,您有
      Page1.jsp
      Page2.jsp
      。两者都使用非常相似的
      s:iterator
      ,唯一的区别是传递给它的变量。目标是将
      s:iterator
      重构到某个地方,以便只编写一次
    自然,在现实生活中,需要重构的代码不仅仅是
    s:iterator

    Page1.jsp:

    
    
    Page2.jsp:


    我不认为有任何理由将参数传递给标记。请注意,参数仅作为请求参数访问:

    参数作为请求参数传递,因此请使用
    ${param.ParamName}
    符号访问它们。不要使用
    s:property
    标记访问包含文件中的参数


    正确的方法是在
    valueStack
    上推送参数

    优雅的解决方案是使用Tiles框架

    Tiles是一个模板框架,旨在轻松创建具有一致外观的web应用程序页面。它可用于页面装饰和组件化



    有和集成插件。

    我不认为有任何理由将参数传递给标记。请注意,参数仅作为请求参数访问:

    参数作为请求参数传递,因此请使用
    ${param.ParamName}
    符号访问它们。不要使用
    s:property
    标记访问包含文件中的参数


    正确的方法是在
    valueStack
    上推送参数

    优雅的解决方案是使用Tiles框架

    Tiles是一个模板框架,旨在轻松创建具有一致外观的web应用程序页面。它可用于页面装饰和组件化



    有和集成插件。

    我实际上在应用程序中使用tiles2。但是,我不确定它在这种情况下是否有效:1.myModules刚刚通过s:include之前的s:action加载-如果您使用tiles装饰它,您将如何传递myModules变量?提前感谢您的回复。我很好奇试想一下这个tiles替代方案,虽然有点不确定它是用来传递如此小的jsp代码片段的……您可以使用属性,但是
    s:action
    s:include
    之前是不起作用的。另外还不清楚您是如何使用它们的。请参阅我添加到原始问题中的示例,以澄清用例。我只使用
    模块s
    getter,在现实生活中,必须包含更多的代码,
    action
    标记的作用几乎相同,但并不便宜。抱歉,没有理解您的意思。什么getter?您将从何处提取迭代器(基于您的Tiles建议或其他)?你能举例说明吗?我实际上在应用程序中使用tiles2。但是,我不确定它在这种情况下是否有效:1.myModules刚刚通过s:include之前的s:action加载-如果你在那里使用tiles装饰它,你将如何传递myModules变量?提前感谢你的回复。我很好奇地想一想这个问题或者,虽然有点不确定它是用来传递如此小的jsp代码片段的……你可以使用属性,但是
    s:action
    s:include
    之前是不起作用的。另外,还不清楚你是如何使用它们的。请看我在原始问题中添加的示例,以澄清用例。我只使用
    模块
    getter,在现实生活中,需要包含更多的代码,
    action
    标记的作用几乎相同,但它并不便宜。对不起,没有理解您的意思。什么getter?您将从哪里提取迭代器(基于您的Tiles建议或其他)?您能举例说明吗?