JSF下拉框。
jsf 下拉框其实很好用,就是<h:selectOneMenu …./>标签,具体写法如下:
<table>
<tbody>
<tr>
<td width=”101″><h:selectonemenu id=”tsmCompanyId” value=”#{loginBean.tsmCompanyId}” binding=”#{webinput_dropDown.tsmCompanyId}”><f:selectitems value=”#{webinput_dropDown.tsmCompanyIdList}”></f:selectitems></h:selectonemenu></td>
</tr>
<tr>
</tr>
</tbody>
</table>
<p> </p>
其中webinput_dropDown是绑定数据,提供UIInput的类的抽象,loginBean是需要绑定backing bean的类.webinput_dropDown.tsmCompanyId,这里的tsmCompanyId是UIInput,类的代码如下:
public class BaseSelectItemListBean {
private UIInput tsmCompanyId=null; public String[] getSelectedTsmCompanyIdes()
{
return getAsString(this.getTsmCompanyId().getValue());
}
private String[] getAsString(Object tmp) {
String[] result = null;
if (tmp!=null) {
if (tmp.getClass().isArray()) {
int size = Array.getLength(tmp);
if (size>0) {
result=new String[size];
for(int i=0; i<size; ++i) {
result[i] = (String) Array.get(tmp, i);
}
}
}
else {
result = new String[1];
result[0] = (String) tmp;
}
}
return result;
}
//****************
public String getTextValue() {
textValue = “”;
String[] tsmCompanyIdes=getSelectedTsmCompanyIdes();
if(tsmCompanyIdes!=null) {
textValue=tsmCompanyIdes.length==1? “tcmCompanyId:”: “tsmCompanyIdes:”;
for(int i=0; i<tsmCompanyIdes.length; ++i) {
textValue +=” “+tsmCompanyIdes[i];
}
textValue += “. “;
}
return textValue;
}
public UIInput getTsmCompanyId() {
return tsmCompanyId;
}
public void setTsmCompanyId(UIInput tsmCompanyId) {
this.tsmCompanyId = tsmCompanyId;
}
//*******************获取公司的信息**************
public List getTsmCompanyIdList() {
return SelectItemDAO.getTsmCompanyIdList();
}
其中getTsmCompanyIdList方法封装在另一个类SelectItemDAO中,具体写法如下:
public class SelectItemDAO {
/**
* Return a list of Company
*
* @param returnOnlyMainOffices
* @return
*/
public static List getTsmCompanyIdList() {
List result = new ArrayList();
result.add(new SelectItem(“-1″, “请选择”));
List children = DaoFacade.getInstance().getSystemManager()
.getTsmCompanyDAO().findAllCompany();
TsmCompany tsmCompany = new TsmCompany();
if (children.size() > 0) {
for (int i = 0; i < children.size(); i++) {
tsmCompany = (TsmCompany) children.get(i);
result.add(new SelectItem(String.valueOf(tsmCompany.getId()),
tsmCompany.getCompanyName()));
}
}
return result;
}
}
如上的写法,通过hibernate和数据库交互,读出公司表中的信息.
所以使用JSF还是很方便的,在页面只需要一个<h…./>标签,在backing bean中再处理需要的逻辑.