我对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的新手,因此适用的代码示例非常棒。
答案 0 :(得分:1)
在你的情况下,我建议使用自定义标签(如footer.tag)添加页脚(可能在许多页面上会有页脚)。这样,至少代码只集中在一个位置。
如果自定义标记填满了代码,请考虑使用Java编写代码:我想说构建一个链接已经是在Java类中编写它的候选者,因为有许多可选参数。
一般来说,如果你得到太多c:select et。 al。,你可以改进你的模型(在你的情况下:FooterComponent)。因此,如果可以简化视图中的逻辑,我会向模型添加更多功能,并在视图中调用方法。因此if / switch语句保留在模型中,并且它们不会使您的视图混乱。