2011-01-13 2 views
1

안녕하십니까 : jsf 프로젝트를 개발 중이며 selectOneMenu를 작동시키는 데 익숙하지 않습니다.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); 
    } 
} 

The error is:javax.servlet.ServletException: Argument Error: An option for component j_id8 was not an instance of javax.faces.model.SelectItem. Type found: 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)

답변

1

는 각 SelectItem가 값 (게시물 매개 변수로 전송됩니다 문자열)과 레이블이 유형 List<SelectItem>, 될 당신의 employeeEditBean.branchList이 필요합니다.

그래서 원래의 분기 목록을 기반으로 그 목록을 만들어야합니다.

2

사실, 나는 이것을하는 또 다른 방법을 찾았습니다. tomahawk12 라이브러리를 추가합니다.

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

employeeEditBean에서 코드를 변경하지 않았습니다.

고맙다 모두

관련 문제