2011-06-28 24 views
1

ViewScopeの下にマネージドBeanがあります。内部にインスタンス変数があります。ビューにJSFビュースコープの値が適切に表示されない

MetaDataオブジェクトには、inputItemオブジェクトListがあります。私のJSFで

@ManagedBean 
@ViewScoped 
public class ConBean implements Serializable { 

    private MetaData metadata; 

    @PostConstruct 
    @SuppressWarnings("unchecked") 
    public void init() throws IOException { 
     this.metadata = new MetaData(); 
    } 

    public void proc(){ 
     List<InputItem> inputs= new ArrayList<InputItem>(); 
     inputs.add(***** code to populate the inputItem List); 
     //after populating, inputs added to the metadata 
     metadata.setInputs(inputs); 

    } 

//getters & setters 
} 

、入力リストは、UIリピートの内側に取​​り込まれます。

<div id="inputplaceholder"> 
<ui:repeat value="#{conBean.metaData.inputs}" var="content"> 

</ui:repeat> 
</div> 

div入力プレースホルダは、richfaces pollを使用して定期的に更新されます。

<a4j:poll id="poll" interval="12000" action="#{conBean.proc}" 
            execute="@form" render="inputplaceholder"/> 

inputItemsは、ビューがレンダリングされるメタデータオブジェクトを正しくprocの内部()メソッド、/部分的に更新に設定されているにもかかわらず、私は、それがで強調表示されませんされている問題UI。部分的な更新は効果を持ちません。私は移動しようとしました

this.metadata = new MetaData(); procメソッド内に がありましたが、運がありませんでした。

ご意見やご協力をお待ちしております。

ありがとう...

答えて

1

実際に部分レンダリングが行われましたか?不可能だよ。 ID inputplaceholderのJSFコンポーネントはありません。普通のHTML <div>要素に割り当てました。 fullworthy JSFコンポーネントによってそれを置き換える:あなたはrender属性に相対IDを使用するので

<h:panelGroup layout="block" id="inputplaceholder"> 

また、それが唯一のコンテナコンポーネントに名前を付ける同じ親内のコンポーネントをスキャンします。 <ui:repeat>はこのようなものですが、希望のIDを持つコンポーネントはの外側にあり、の外側に配置されています。代わりに絶対IDを使用したいと考えています。それは、固定IDで<h:form>内だと仮定すると:

render=":myform:inputplaceholder" 
+0

Great..onceが詳細かつ迅速な応答をありがとう、再び次のように

<h:form id="myform"> <h:panelGroup layout="block" id="inputplaceholder"> ... 

は、あなたはrender属性でそれを参照する必要があります。..それは働いている... – Sanath

+0

あなたは大歓迎です。 – BalusC

関連する問題