Hi,
I hope I understood you correctly, unless it has been answered somewhere else,here's how I solved it: so you create the component GUI and bind it to the managed bean that fetches the info from the DB.
In my case I needed a class that fetches several country names, the final result looks like this:
The gui component:
<blockquote>
code:
<pre name="code" class="core">
<h:selectManyListbox value="#{CountriesBean.selectedItems}" size="8" styleClass="defaultText">
<f:selectItems value="#{CountriesBean.selectItems}" />
</h:selectManyListbox>
</pre>
</blockquote>
The CountriesBean.java class is declared in faces-config.xml like this:
<blockquote>
code:
<pre name="code" class="core">
<managed-bean>
<managed-bean-name>Countries</managed-bean-name>
<managed-bean-class>xlinuks.Countries</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
</pre>
</blockquote>
Its source code:
<blockquote>
code:
<pre name="code" class="core">
package xlinuks;
import javax.faces.model.*;
import java.util.*;
public class Countries {
List<String> selectedItems; // + getter + setter
List<SelectItem> selectItems; // + getter only
public Countries() {
}
public List<SelectItem> getSelectItems() {
if( selectItems == null ) {
//so it actually calls another class called Connector
//that fetches the data from the DB
selectItems = Connector.getCountries( language );
}
return selectItems;
}
public void setSelectItems( List<SelectItem> selectItems ) {
this.selectItems = selectItems;
}
public List<String> getSelectedItems() {
return selectedItems;
}
public void setSelectedItems( List<String> selectedItems ) {
this.selectedItems = selectedItems;
}
}
</pre>
</blockquote>
These are the main steps, unfortunately I can't post a detailed description.