【问题标题】:Struts Tiles - Get attributesStruts Tiles - 获取属性
【发布时间】:2011-12-27 21:42:13
【问题描述】:

首先,我不使用 Java 或 Struts,但我了解代码中发生了什么。在编写代码时,我一无所知。我正在使用 KonaKart,他们使用 struts 磁贴来显示布局。

这里是jsp sn-p:

<div class="siderBox noMargin">
    <div class="siderBoxTop"></div>
    <div class="siderBoxContent">
        <tiles:insert attribute="leftTile1" />
    </div>
    <div class="siderBoxBottom"></div>
 </div>

根据当前页面,leftTile1 的值可能为 Empty.jsp,这只是一个空页面(例如 leftTile5 和 leftTile6):

<put name="leftTile5" value="/WEB-INF/jsp/InformationTile.jsp"/>
<put name="leftTile6" value="/WEB-INF/jsp/Empty.jsp"/>

如果磁贴有一个空白页面,那么该框仍然会出现,我会留下所有这些空白框。有什么方法可以获取属性值而不显示磁贴(即if(leftTile1.attribute!="/WEB-INF/jsp/Empty.jsp"){ //show the content; })?

最坏的情况,我可以浏览所有 30 个 jsp 文件,并用图块的页眉和页脚包装内容。

当前输出的屏幕截图以及我想要摆脱的内容:

【问题讨论】:

    标签: jsp tomcat struts tiles konakart


    【解决方案1】:

    未测试,但如果必须不显示任何内容,您可以将属性定义为空字符串而不是 /WEB-INF/jsp/Empty.jsp,并在布局中使用以下代码:

    <tiles:useAttribute name="leftTile1" id="leftTile1"/>
    <c:if test="${!empty leftTile1}">
        <div class="siderBoxContent">
            <tiles:insert attribute="leftTile1" />
        </div>
    </c:if>
    

    【讨论】:

    • 听起来不错,我明天上班试试……同时,我使用 jQuery 将包含的部分与我的标签一起包装,它完美地完成了这个技巧。
    【解决方案2】:

    这最终成功了:

    <tiles:importAttribute name="leftTile1" scope="request" />
    <logic:notEqual name="leftTile1" value="/WEB-INF/jsp/Empty.jsp">
        <div class="siderBox noMargin">
             <div class="siderBoxTop"></div>
             <div class="siderBoxContent">
                  <tiles:insert attribute="leftTile1" />
             </div>
             <div class="siderBoxBottom"></div>
         </div>
    </logic:notEqual>
    

    感谢 JB 的帮助,它让我找到了正确的方向。

    【讨论】:

      猜你喜欢
      • 2015-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多