2011-10-19 23 views
0

なぜ#{uImanager.select}は更新されませんか?Ajaxの更新が機能しない

<p:panel id="EditDetailsPanel" header="Edit Details"> 
    <h:panelGrid columns="2" cellpadding="5"> 
     <h:outputLabel value="Simple :" /> 
     <h:selectOneMenu value="#{uImanager.select}"> 
      <f:selectItem itemValue="val1" itemLabel="Coffee1" /> 
      <f:selectItem itemValue="val2" itemLabel="Coffee2" /> 
      <f:selectItem itemValue="val3" itemLabel="Coffee3" />         
     </h:selectOneMenu> 
    </h:panelGrid> 
    <p:commandButton value="Submit" update="EditDetailsForm:EditDetailsPanel"/> 
    #{uImanager.select} 
</p:panel> 

ゲッターとセッターでprivate String Select;を指します。セッションスコープのマネージドBeanで定義されています。

答えて

1

update属性が無効なクライアントIDを示している可能性があるためです。あなたは、サーバーのログに注意を払った場合は、PrimeFacesから次のようなものを見ている必要があります:<p:panel>として

INFO: Cannot find component with identifier "EditDetailsForm:EditDetailsPanel" in view. 

は、少なくとも、コードに基づいて<p:commandButton>自体(同じUINamingContainer親の内側にありますあなたは)これまでに投稿した、あなただけの相対的なクライアントIDを指定することができます。

<p:commandButton value="Submit" update="EditDetailsPanel"/> 

それとも、絶対的なクライアントIDを指定する際に主張すれば、あなたは:を前に付けする必要があります。

<p:commandButton value="Submit" update=":EditDetailsForm:EditDetailsPanel"/> 

これは、<h:form>自体が別のUINamingContainer親を持たない場合にのみ機能することに注意してください。ブラウザでページを開き、右クリックしてソースを表示し、生成されたHTML要素IDを確認します。最後に、その値の前に:という接頭辞が必要です。

+0

これは問題ではありません。このコードはid = "EditDetailsForm"の形式です –

+0

これは問題ではありません。相対クライアントIDは現在の 'UINamingContainer'親に解決されます。あなたが本当に長いクライアントIDと絶対的なクライアントIDを指定しなければならない場合は、それに接頭辞 ':'を付ける必要があります。しかし、私はそれがどのように役立つかは分かりません。私の答えに記載されている値を使用してください。 – BalusC

+0

私は答えを更新して、それを説明しました。 – BalusC

関連する問題