JSF 下拉框

    技术2022-05-11  102

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


    最新回复(0)