2D配列をページ内のテーブルとして表示しようとしています。これは車輪の再発明のように聞こえますが、処理する必要のあるオブジェクトは、特定の方法(常に同じ)でレンダリングする必要があるカスタムタイプの2D配列です。
トリッキーな部分は、この2D配列の一部のインデックスにnull値が含まれる可能性があることです。そのような場合、特定の「使用できない」セルをレンダリングする必要があります。テーブル構造(yes ...<table>
<tr>
および)は、設計チーム<td>
によってすでに定義されており、クライアントによって受け入れられています。
使用しようとしまし<c:forEach/>
たが、JSTLタグとJSFタグの管理順序が原因で、うまく機能させることができませんでした。JSFタグが処理されるとき、古い値や欠落しているコンポーネントを含むいくつかの問題があります。
配列(@ViewScoped
Beanの属性)は<c:forEach/>
、配列の作成を強制した場合でも、呼び出されたときに常にnullになります。
public MyObject[][] getMatrix() {
if(loadedMatrix == null)
initializeMatrix();
return loadedMatrix.getTable();
}
このinitializeMatrix()
メソッドは、データベースから対応するデータを取得し、2D配列を作成するロジックを呼び出し、作成loadedMatrix
後にそれを参照します(これはすべて機能し、例外やエラーはありません)。initializeMatrix
終了しても、まだloadedMatrix
ですnull
。
<c:forEach/>
何をレンダリングするかを知るためにテーブルのインデックスを管理する必要があるため(オブジェクトがnullの場合、可用性フラグがfalseに設定されているか、正常にレンダリングできるかどうか)、ネストされたオプションを選択しましたが、今のところは最も安全な解決策は、カスタムコンポーネントを作成することです。
私の質問は、レンダリングしているインデックスを認識しながら、2D配列のコンテンツをテーブルとしてレンダリングするためにどのような代替手段が必要かということです。
前もって感謝します