2014-03-28 2 views
1

JSF를 프론트 엔드 기술로 사용하여 개발 한 데이터베이스를 검색하려고합니다. 나는 다음과 같은 말에 오류가 점점 오전 : 내 JSF 페이지에서이 오류가 발생하는 이유는 무엇입니까?

수 없습니다

는 찾을 방법 [searchContractors] [0] 여기

매개 변수 내가 사용한 코드와 함께. 아무도 내가 왜이 오류가 발생하는지 이해할 수 없기 때문에 내가 잘못하고있는 것이 명백하다는 것을 알 수 있습니까? 도와 주셔서 감사합니다.

JSF 코드

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
xmlns:ui="http://java.sun.com/jsf/facelets" 
xmlns:h="http://java.sun.com/jsf/html" 
xmlns:f="http://java.sun.com/jsf/core"> 

<head> 
<title>Search</title> 
</head> 
<body> 
<h:form id="searchForm"> 
    <H2>Search</H2> 
    <H4>Please select the county that you live in. 
    </H4> 
    <table> 

     <tr> 
      <td><h:outputLabel for="county"> 
        <h:outputText id="countyLabel" value="County" /> 
       </h:outputLabel></td> 

      <td><h:selectOneMenu id="countyName" 
        value="#{searchBean.countyId}"> 
        <f:selectItems value="#{registerBean.counties}" var="county" 
         itemLabel="#{county.name}" itemValue="#{county.id}" /> 
       </h:selectOneMenu></td> 
     </tr> 
     <tr> 
      <td><h:commandButton id="searchContractors" 
        action="#{searchBean.searchContractors(searchBean.countyId)}"> 
        <h:outputText value="Search Contractors" /> 
    </table> 

</h:form> 
</body> 
</html> 

자바 코드

@ManagedBean 
@SessionScoped 
public class SearchBean implements Serializable { 

private static final long serialVersionUID = -2107387060867715013L; 
private static final String PERSISTENCE_UNIT_NAME = "NeedABuilderUnit"; 
private static EntityManagerFactory factory; 
private int countyId; 

public List<BusinessAccount> searchContractors(int countyId) { 
    factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME); 
    EntityManager em = factory.createEntityManager(); 
    List<BusinessAccount> contractorList = new ArrayList<BusinessAccount>(); 

     em.getTransaction().begin(); 
     Query myQuery = em.createQuery("SELECT u FROM BusinessAccount u WHERE u.county.id=:CountyId"); 
     myQuery.setParameter("CountyId", countyId); 

     contractorList=myQuery.getResultList(); 
     em.getTransaction().commit(); 
     em.close(); 

     return contractorList; 

    } 


public int getCountyId() { 
    return countyId; 
} 

public void setCountyId(int countyId) { 
    this.countyId = countyId; 
} 
} 
+0

어쩌면 잘못된 EL 버전이 실행시에 사용됩니까? [JSF에서 매개 변수를 사용하여 메소드를 호출하는 방법]을 참조하십시오. (http://stackoverflow.com/questions/5273729) – halfbit

+0

답변 해 주셔서 고맙지 만 문제는 아닙니다. 다른 JSF 페이지에서 매개 변수를 성공적으로 전달하고 있습니다. – kellzer

+0

해당 페이지와 해당 관리 Bean 및/또는 사용 된 관리 Bean 사이의 매력적인 차이점을 확인하십시오. – Omar

답변

0

다음과 같은 작업을해야합니다 :

<ui:param name="countyId" value="#{searchBean.countyId}" /> 
... 
<h:commandButton id="searchContractors" 
    action="#{searchBean.searchContractors(countyId)}"> 
관련 문제