ユーザーが動的にフォームを作成し、同じページからこのフォームに入力されたデータを送信できるようにする必要がある JSF ページがあります。
それを達成するために 2 つの設計アプローチを取りましたが、どれも完全には機能しませんでした。
アプローチ 1: JSF ページに ap:panel コンポーネントを配置して動的フォームのコンテナーとして機能させ、それをバッキング Bean にバインドします。また、ページにフォーム要素を追加するために commandButtons を配置し、これらのボタンのアクション ハンドラーに、特定の UIComponents をパネル UI コンポーネントに追加するロジックを配置しました。これらのアクション ハンドラーの結果、faces-redirect=true で同じページに設定しました。結果: ダイナミックは適切に表示されますが、このダイナミック フォームの送信ボタンは常に 2 回目のクリックでしか機能しません。
アプローチ 2: ap:panel コンポーネントを JSF ページに配置して、動的フォームのコンテナーとして機能させます。このパネル内に、ui:include を使用して生成された JSF ページを含めます。前のアプローチと同様に、フォーム要素を追加するコマンド ボタンのアクション ハンドラーで、含める JSF ページを生成します。これらのアクション ハンドラーの結果、faces-redirect=true で同じページに設定しました。結果: 生成された JSF ページは、アクション ハンドラの実行とページのレンダリングが完了した直後には表示されません。マニュアル ページを 2 ~ 3 回更新すると、生成された JSF ページが表示されます。
私は、私の要件を達成するために正しい設計を採用していないと思います。両方のアプローチまたは代替案で何が問題になっているのか教えてください。
私は PrimeFaces と Tomcat 7.0.27 を使用しています。
よろしく、アナンド。