2014-03-28 155 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> 

Java代码

@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之间的吸引力差异。 – Omar

回答

0

下面应该工作:

<ui:param name="countyId" value="#{searchBean.countyId}" /> 
... 
<h:commandButton id="searchContractors" 
    action="#{searchBean.searchContractors(countyId)}"> 
相关问题