jsf selectonemenu错误

时间:2011-01-13 21:14:21

标签: jsf

您好: 我正在开发一个jsf项目,我正在努力让selectOneMenu工作。

<h:selectOneMenu value="#{employeeEditBean.employeeBean}">
      <f:selectItems value="#{employeeEditBean.branchList}" />
     </h:selectOneMenu>
public class EmployeeEditHandler
{
 private String paramEmPK;
 private Employee employeeBean;
 private List<Branch> branchList;

 private int branchFK;


 public EmployeeEditHandler()
 {
  paramEmPK = FacesContext.getCurrentInstance().getExternalContext()
    .getRequestParameterMap().get("emPK");
  int emPK = Integer.parseInt(paramEmPK);
  branchList = new ArrayList<Branch>();
  employeeBean = new Employee();
  FacesContext context = FacesContext.getCurrentInstance();
  try 
  {
   employeeBean = DaoFactory.getEmployeeDao().lookupEmployeeByPK(emPK);
   branchFK = employeeBean.getBranchFK();
   branchList = DaoFactory.getBranchDao().findAllBranch();

  } 
  catch (Exception e) {
   FacesMessage msg = new FacesMessage(e.getMessage());
   msg.setSeverity(FacesMessage.SEVERITY_ERROR);
   context.addMessage("employeeEditForm", msg);
  }
 }
  

错误是:javax.servlet.ServletException:参数错误:组件j_id8的选项不是javax.faces.model.SelectItem的实例。找到的类型:java.util.ArrayList。    javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)    org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)    org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)    org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)    org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)

2 个答案:

答案 0 :(得分:2)

实际上,我找到了另一种方法。我添加了一个tomahawk12库。

<h:selectOneMenu value="#{employeeEditBean.branchFK}">
    <t:selectItems value="#{employeeEditBean.branchList }" var="br" itemLabel="#{br.branchName}" itemValue="#{br.branchPK }" />
</h:selectOneMenu>

我没有更改employeeEditBean中的代码。

全部谢谢

答案 1 :(得分:1)

您需要employeeEditBean.branchList类型为List<SelectItem>,其中每个SelectItem都有一个值(将作为post参数传输的字符串)和一个标签。

因此,您需要根据原始分支列表创建该列表。