0

私の Seam アプリケーションには、一連のHTML 要素@Datamodelに変換したいアイテムの ( ) リストを返す Seam コンポーネントがあります。<li>これで問題なく動作しています。

しかし今、EL式に従ってリストを分割したいと思います。したがって、EL 式は、新しい<ul>要素を開始する必要があるかどうかを決定します。私は次のことを試しました:

<s:fragment rendered="#{action.isNewList(index)}">
  <ul>
</s:fragment>
<!-- stuff that does the <li>'s goes here -->
<s:fragment rendered="#{action.isNewList(index)}">
  </ul>
</s:fragment>

しかし、入れ子<ul>が間違っているため、それは無効です。

どうすればいいですか?

4

4 に答える 4

1

<f:verbatim>これは、きれいではありませんが機能する JSF タグを使用して行うことができます。

<f:verbatim rendered="#{action.isNewList(index)}">
  &lt;ul&gt;
</f:verbatim>
<!-- stuff that does the <li>'s goes here -->
<f:verbatim rendered="#{action.isNewList(index)}">
  &lt;/ul&gt;
</f:verbatim>
于 2009-01-28T13:51:19.460 に答える
0

次のようなものが必要です(疑似コードを使用します):

<ul>
    <s:for items="itemList" ...>

      <s:fragment rendered="#{action.isNewList(index) && index > 0}">
        </ul>
        <ul>
      </s:fragment>
      <li>
        <!-- stuff that does the <li>'s goes here -->
      </li>

    </s:for>
</ul>
于 2009-01-27T22:20:07.747 に答える
0

私は Seam Framework に詳しくありませんが、問題を正しく理解していれば、このようなことがうまくいくかもしれません。

<!-- before your loop, open your first <ul> if the (@Datamodel) is not empty -->

<s:fragment rendered="#{action.isNewList(index)}">
  </ul>
  <ul>
</s:fragment>
<!-- stuff that does the <li>'s goes here -->

<!-- after your loop, close your last </ul> if the (@Datamodel) is not empty -->
于 2009-01-27T15:48:52.437 に答える
0

特に Seam について詳しくはありませんが、XSLT やその他の XML ベースのフレームワークを使用しているときに、これと同じ問題が発生するのを見てきました。

一般に、次の 2 つの解決策があります。

  1. リスト全体が単一の条件に応じて記述されるように、ページとデータ アーキテクチャを再考してください。これには、s:fragment 内でループが必要になる場合があります。
  2. 問題のある無効なフラグメント html を <![CDATA[ ... ]]> でラップします。
于 2009-01-27T15:56:43.513 に答える