1

ユーザーが動的にフォームを作成し、同じページからこのフォームに入力されたデータを送信できるようにする必要がある 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 を使用しています。

よろしく、アナンド。

4

1 に答える 1

1

Glassfish上のPrimeFaces3.3を使用してJSF2.2でシングルページ管理アプリを開発しています。マネージドBeanとajaxを使用して、動的フォームのすべてのニーズを処理できるはずです。送信フォームBeanがViewScopedであることを確認してください。私のJSFの問題のほとんどは、スコープに関連しています。各フォームタグには、単一の目的が必要です。これが私がFORMページに使用する構造です。

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:p="http://primefaces.org/ui"      
  xmlns:f="http://java.sun.com/jsf/core">
<h:head>
</h:head>
<h:body>
    <h2>
       FORM ONE
    </h2>        
    <h:form>
       <p:panel> or <p:panelGrid>
    </h:form>
    <h2>
       FORM TWO
    </h2>        
    <h:form>
       <p:panel> or <p:panelGrid>
    </h:form>
</h:body>

BalusCはJSFの王様です。これは、このテーマに関する彼の関連するエントリです。

http://balusc.blogspot.com/2011/09/communication-in-jsf-20.html#ManagedBeanScopes

http://balusc.blogspot.com/2010/06/benefits-and-pitfalls-of-viewscoped.html

JSF 1.2または2.xを使用していますか?

http://balusc.blogspot.com/2006/06/communication-in-jsf.html

于 2012-10-02T16:05:02.757 に答える