2

私は長い間JSPユーザーですが、初心者であり、本当に簡単な作業だと思っていたことに固執しています。

オプションのテンプレートコンテンツをdivタグでラップするにはどうすればよいですか?

たとえば、次の簡略化されたテンプレートがあるとします。

<?xml version='1.0' encoding='UTF-8' ?>
<html xml:lang="en" lang="en"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html">

    <h:head>
        <!-- head stuff here -->
    </h:head>

    <h:body>
        <!-- main body stuff here -->
        <div class="border-box">
            <ui:insert name="optional" />
        </div>
    </h:body>

</html>

オプションのコンテンツを定義せずにこのテンプレートを使用すると、不要な空のボックスが表示されます。

私は解決策を探しましたが、同じ質問が数回出されましたが、本当の答えはありませんでした。

誰かが私を助けることができますか?これは、テンプレートシステムでやりたいと思うのはかなり合理的なことのように思えますが、私は困惑しています。

4

2 に答える 2

2

maelに感謝します。コンテンツがui:param value属性に収まる場合は、ui:fragmentが最適な方法のようですが、最初の提案を行います。ui:decorateを使用して、ラッパーをテンプレート化します。

ページテンプレート:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html
    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xml:lang="en" lang="en"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html">

    <h:head>
        <!-- head stuff here -->
    </h:head>

    <h:body>
        <!-- main body stuff here -->
        <ui:insert name="optional" />
    </h:body>

</html>

ラッパーテンプレート:

<?xml version='1.0' encoding='UTF-8' ?>
<ui:composition
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets">

    <div class="border-box">
        <ui:insert />
    </div>

</ui:composition>

呼び出し:

<?xml version='1.0' encoding='UTF-8' ?>
<ui:composition
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    template="page.xhtml">

    <!-- other ui:defines -->

    <ui:define name="optional">
        <ui:decorate template="wrapper.xhtml">
            <!-- optional content -->
        </ui:decorate>
    </ui:define>

</ui:composition>
于 2012-10-03T09:43:46.247 に答える
0

を削除しdivて、テンプレートを使用するページで次のようにします。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head />
<body>
<ui:composition template="template.xhtml">
  <ui:define name="optional">
    <div class="border-box">
        <!-- Content here -->
    </div>
</ui:define>
</ui:composition>
</body>
</html>
于 2012-10-02T15:01:30.807 に答える