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など)を使用してフッターを追加することをお勧めします(おそらく多くのページにフッターがあるでしょう)。このようにして、少なくともコードは 1 つの場所にのみ集中化されます。

カスタム タグがコードでいっぱいになる場合は、Java でコーディングすることを検討してください。オプションの引数がたくさんあるため、リンクの作成はすでに Java クラスで記述する候補であると言えます。

一般的に言えば、c:choose et が多すぎる場合。さらに、モデルを改善できる可能性があります(あなたの場合: FooterComponent)。したがって、ビュー内のロジックを単純化できる場合は、モデルに機能を追加して、ビュー内のメソッドを呼び出すだけです。そのため、if/switch ステートメントはモデルに残り、ビューが乱雑になることはありません。

于 2013-07-05T20:45:38.720 に答える