0

一般来说,我对 JSTL 还是很陌生,但我认为必须有更好的方法来做到这一点。我有一个嵌套的 JSTL 条件,基本上输出一些文本和链接似乎有很多代码。我想知道是否可以使用条件作为值设置另一个变量并使用它而不是嵌套条件,但我不完全确定如何做到这一点,或者这是否是最好的方法。如果有任何关于如何使这更简洁的建议,我将不胜感激。

<c:set var="footer" value="<%= new FooterComponent(resource) %>"/>

<c:choose>
<c:when test="${not empty footer.text}">
    <a target="${footer.target}">
    <c:choose>
       <c:when test="${not empty footer.anchor}">href="${footer.url}.${footer.Selector}.html"</c:when>
       <c:otherwise>href="${footer.url}"</c:otherwise>
    </c:choose>
    class="${footer.class}">
    <span>${footer.textHeader}</span>
    </a>
</c:when>
<c:otherwise><span>${footer.defaultText}</span></c:otherwise>
</c:choose> 

我是 JSTL 的新手,因此适用的代码示例会很棒。

4

1 回答 1

1

在您的情况下,我建议使用自定义标签(如footer.tag)来添加页脚(可能很多页面上都会有页脚)。这样至少代码只集中在一个位置。

如果自定义标签填满了代码,请考虑用 Java 对其进行编码:我想说构建一个链接已经可以在 Java 类中编写它,因为有许多可选参数。

一般来说,如果你最终得到太多 c:choose et。al.,您可能会改进您的模型(在您的情况下:FooterComponent)。因此,如果可以简化视图中的逻辑,我会为模型添加更多功能,并且只需调用视图中的方法。所以 if/switch 语句保留在模型中,它们不会弄乱您的视图。

于 2013-07-05T20:45:38.720 回答