2013-07-05 117 views
0

我對JSTL來說一般都很陌生,但是認爲必須有更好的方法才能做到這一點。 我有一個嵌套的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的新手,所以代碼樣本適用性會很好。

回答

1

在你的情況,我建議使用自定義標籤(如footer.tag)來添加頁腳(可能會在很多頁面上有頁腳)。這樣至少代碼只集中在一個位置。

如果一個自定義標籤填滿了代碼,可以考慮使用Java進行編碼:由於許多可選參數,我認爲構建一個鏈接已經是將它寫入Java類的候選者。

一般來說,如果結果太多c:choose et。 al。,你可以改善你的模型(在你的情況:FooterComponent)。因此,如果可以簡化視圖中的邏輯,我會爲該模型添加更多功能,並只調用視圖中的方法。因此,if/switch語句保留在模型中,並且不會混淆視圖。