JSF はマネージド Bean と呼ばれる Bean インスタンスを作成します。これは、 EL 式#{}
とも呼ばれるラップされた式を使用してページから呼び出すことができます。実際にインスタンスから getter を呼び出しています。Bean インスタンスはデフォルトで、最初の文字を小文字にしたクラスの単純名で参照されます。#{timeBean.time}
getTime()
timeBean
だから、この豆を持っている:
@ManagedBean
@RequestScoped
public class TimeBean{
public Date getTime(){
return new Date();
}
}
アノテーションを使用@ManagedBean
して、JSF によって管理する必要があることを伝えます。Bean のスコープを表現し@RequestScoped
ているため、実際には、JSF はブラウザーの要求ごとに 1 つの Bean インスタンスを作成getTime()
し、ページで指定するたびに getter メソッドを呼び出します。
フォーム フィールドの場合、getter メソッドと setter メソッドの両方を持つ変数を指定する必要があります。これは、フォームが処理されるときに JSF がその値を設定するためです。
@ManagedBean
@RequestScoped
public class TimeFormBean{
//Initializes time with current time when bean is constructed
private Date time = new Date();
public Date getTime(){
//No logic here, just return the field
return time;
}
public void setTime(Date d){
time=d;
}
public void processTime(){
System.out.println("Time processed: " + time);
}
}
次に、フォーム入力でそのように使用できます。
<h:form>
<h:inputText value="#{timeFormBean.time}">
<f:convertDateTime pattern="yyyy-MM-dd"/>
</h:inputText>
<h:commandButton value="process" action="#{timeFormBean.processTime}" />
</h:form>