2012-03-02 13 views
0

私は以前に書かれたコードを理解しようとしています。 「私はDataTableのいくつかの変更を加える必要があるが、私はキャンジェネリックのJSF Beans

<rich:dataTable id="myList" value="#{myController}" var="myViewBean"...> 
     <rich:column> 
       <h:outputText value="#{myViewBean.myproperty}" /> 
     </rich:column> 
</rich:datatable> 

:コンフィグで

public abstract class BaseModel{....} 


public abstract class ExtendedModel<T extends BaseModel>{....} 


public class MyViewBean extends BaseModel{...} 

public class MyController extends ExtendedModel<MyViewBean > {....} 

:JSFページで

<bean name="MyViewBean" id="myViewBean" scope="request" class="com.bean.MyViewBean"/> 

<bean name="MyController" id="myController" scope="session" 
     class="com.controller.MyController" init-method="init"> 
    The property list goes here (in this list there is no myViewBean reference). 
</bean> 

ここ

は、クラス定義されています正確にはvar="myViewBean"にあり、value="#{myViewBean.myproperty}"<rich:column>にあります。

答えて

0

var="myViewBean"は、コンポーネント内のELスコープで#{myViewBean}でアクセスできるように、現在反復されているオブジェクトのEL変数名を設定するだけです。これは、基本的には、プレーンJavaで、次のと同様の効果:

for (MyViewBean myViewBean : myController) { 
    System.out.println(myViewBean.getMyproperty()); 
} 

myViewBean変数は、ループの外には使用できません。

これはがありません。はジェネリックスと関係があるとします。さらに、genericsはJavaでコンパイル時に役立ち、コンパイル後に消去されます。

関連する問題