2011-11-08 19 views
3

私は純粋なHTMLフォームセクションをプラグインする必要があるかなり複雑なJSFページ(JSF2 with faceletを使用しています)を持っています(ドキュメントのWYSIWYGテンプレートを表しています)それは後でPdfとして作成されます)。マネージドBeanの動的入力要素を読み取るJSF

String text1 = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("ft2"); 

: 非常に単純化ページは、(リクエストがスコープ)私は、このように「foo」という文字列を取得しようとしたアクションリスナーを持っている管理Bean MyBeanとで

<h:form id="formEditDoc"> 
    <p:commandButton styleClass="commandButton" value="Save" 
     actionListener="#{myBean.myAction}" update="masterForm:msg"> 
    </p:commandButton> 

    <!-- some jsf controls here --> 
    .... 

    <!-- this is my dynamic section --> 
    <input id="ft2" type="text" value="foo"/> 
</h:form> 

のように見えますしかし、私は価値を得ることができません。 Text1は常にnullです。私もajax = falseをcommandButtonに設定しようとしましたが、何も変わりませんでした。 私が間違っていることについて何か考えていますか?

答えて

4

ではなく、要求パラメータname=valueとして送信される入力のname=valueペアです。代わりにname属性を設定する必要があります。具体的な問題への無関係

<input id="ft2" name="ft2" type="text" value="foo"/> 

、私は値を設定する代わりに@ManagedPropertyを使用することをお勧め:

@ManagedProperty("#{param.ft2}") 
private String ft2; 
+0

まず物事を最初:ソリューションをありがとうございました。一般的なアプローチでは、私の問題はより複雑です。 @ManagedProperty( "#{param.ft2}")プライベートString ft2を使用することはできません。なぜなら、私は自分のページにいくつの入力フィールドがあるのか​​わからないからです。ユーザーが自分で作成できるテンプレートに依存しているからです。同様の理由から、inputHiddenを使用することはできません。最初に、入力ボックスをユーザーから見えるようにしたい、次に2番目に、必要なものがどれくらいあるかわかりません。 – themarcuz

+1

それらの入力に**同じ**名前を与え、 'String {]'プロパティに '#{paramValues.ft}'を使用します。 HTML DOMに登場したときに順番に表示されます。私はあなたが 'type =" hidden "を使わなかったことを見落としました。 – BalusC

関連する問題