JSF下拉框实例



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>&nbsp;</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中再处理需要的逻辑.