0

SelectOneRadioを使用してクレイジーなグループ化を行いたいのでname、タグの属性を指定できる独自のカスタムコンポーネントを作成することにしました<input>(ご存知のとおり、nameラジオボタンが同じグループにあることを意味します)。レンダラーは正しいので、私は<input>このようにレンダリングするために使用されたものを持っています

<input name="myForm:test1" id="myForm:test1:0" value="0" type="radio">

今このようにレンダリングします

<input name="foo" id="myForm:test1:0" value="0" type="radio">

ただし、フォームを送信するとELが機能しなくなります(h:commandButtonとp:commandButtonについても同じです)。だから私がこれを持っているなら

<xxx:selectOneRadio id="test1" value="#{myBean.selectedFood}">

次にEL作業をselectedFood行い、修正値を出力しますが、入れたら

<xxx:selectOneRadio id="test1" value="#{myBean.selectedFood}" groupId="foo"> 

これによりname=foo<input>タグが作成されます。その後、ELバインディングは機能を停止します。selectedFoodですnull

もっとおもしろいことに、これを入れたら

<xxx:selectOneRadio id="test1" value="#{myBean.selectedFood}" groupId="myForm:test1">

これmyForm:test1は正しいクライアントIDであり、ELバインディングが再び機能するため、バインディングが機能しなくなるのは私のコードではないようです。JSFは、クライアントIDに対するタグのname属性を必要としますか?input

4

1 に答える 1

2

nameHTTPリクエストパラメータ名になり、送信されたHTTPリクエストパラメータ値を収集するためにこれを使用する必要があります。これはデフォルトでJSFコンポーネントクライアントIDになり、収集は(またはそれ自体)のdecode()メソッドで行われます。リクエストパラメータ値の取得方法を変更するには、のもオーバーライド/実装する必要があります。RendererUIComponentdecode()Renderer

于 2012-07-10T11:14:59.780 に答える