2

次のように、列の動的セットを表示するために、primefaces を使用しています。

    <p:dataTable value="#{queryResults}" var="row" style="margin-top:15px;">
         <p:columns value="#{row.cells}" var="cell" headerText="#{cell.field.label}" rendered="#{not cell.field.hidden}">
               <h:outputText value="#{cell.value}" />
          </p:columns>
    </p:dataTable>

私の環境は、Tomcat 7 の Majorra 2.0.3、PF 3.5、Spring Webflow 2.3 です。

コマンド ボタンを押すと、予期される結果が表示されますが、部分的な応答が返されますが、テーブルにはセルがありません。

    <div id="alertForm:j_idt58" class="ui-datatable ui-widget" style="margin-top:15px;">
          <table role="grid"><thead><tr role="row"></tr></thead><tfoot></tfoot>
          <tbody id="alertForm:j_idt58_data" class="ui-datatable-data ui-widget-content">
              <tr data-ri="0" class="ui-widget-content ui-datatable-even" role="row"></tr>
              <tr data-ri="1" class="ui-widget-content ui-datatable-odd" role="row"></tr>
              <tr data-ri="2" class="ui-widget-content ui-datatable-even" role="row"></tr>
              <tr data-ri="3" class="ui-widget-content ui-datatable-odd" role="row"></tr>
          </tbody></table></div>

Java コードが呼び出されても、期待どおりに行が返されます。ボタンをもう一度押すと、同じJavaコードが呼び出されますが、部分的な応答にはデータテーブルとそのセルが含まれているため、正しく表示されます...

何が恋しいですか?

注:データテーブルと複数の列の組み合わせにより、すべてが正常に機能します...


私はこの正規表現ライブラリに慣れていません。ただし、一致させようとしているものに基づいて、OS と個々のプログラムの間の改行に関係している可能性があります。

これを試して:*expression = @"upnp.jsp\r?\n[^\n]*?Linux[^\n]*?UPNP[^\n]*?ZD"

あなたが試みていることから加えられた他のいくつかの変更。

次の 2 つの理由からに置き換えまし.*た。[^\n]*?

  • このライブラリ.*が . .*との違いは.*?、正規表現エンジンによって異なります。少なくとも私が使用しているほとんどの正規表現エンジンで.*は、デフォルトで貪欲です。つまり、式で一致を見つけながら、できるだけ多くのデータをキャプチャします。貪欲でないバージョン を使用.*?すると、正規表現は式全体を満たすのに必要なだけキャプチャすることを意味します。これは、最後に詳しく説明する例で特に明らかです。
  • 周囲を削除したのは^$、それらが追加および先頭に追加された場合、.*処理時間の増加にしか作用しないためです (一致するグループを使用していない場合を除きます)。^(.*)upnpまたは^(.*upnp)、一致したグループの内容を使用していた場合、最初の^.*.

貪欲/非貪欲に関しては、一連の二重引用符の間でデータを一致させようとすると、違いが明らかになります"。簡単にするために、キャプチャしたい文字列の途中で二重引用符をエスケープすることは扱いません。

次の文字列を指定します。I said, "Hi." She responded with, "Hello!"

貪欲な正規表現を使用する"(.*)"と、一致するグループは次のようになります。Hi." She responded with, "Hello!

貪欲でない正規表現を使用する"(.*?)"と、一致するグループは次のようになります。Hi.

4

2 に答える 2

0

私の問題を解決<p:datatable>した別のものを持ってみてください。<h:form>

于 2013-10-08T09:12:34.290 に答える
0

解決策は次のとおりです: (マニュアルを読む) p:columns は、ヘッダーを表示し、「昔ながらの」インデックス方法でデータにアクセスできるようにするインデックス変数 (columnIndexVar) を作成するためにのみ使用されます。

マヌエルは次のように述べています。

動的列 動的列は、レンダリングする列の数がわからない場合に便利です。列コンポーネントは、列をプログラムで定義するために使用されます。値としてコレクション、var および columnIndexVar と呼ばれる 2 つの反復子変数が必要です。

<p:dataTable var="cars" value="#{tableBean.dynamicCars}" id="carsTable">
    <p:columns value="#{tableBean.columns}" var="column" columnIndexVar="colIndex">
        <f:facet name="header">
            <h:outputText value="#{column}"/>
        </f:facet>
        <h:outputText value="#{cars[colIndex].model}" /> <br />
        <h:outputText value="#{cars[colIndex].year}" /> <br />
        <h:outputText value="#{cars[colIndex].color}"/>
    </p:columns>
</p:dataTable>
于 2013-12-11T10:05:33.653 に答える