ejb-ql join and h:dataTable
vikramchhetryy Jan 7, 2008 4:15 PMHi All,
I have a search user page where user can be searched by firstname and last name.
My Code
xhtml
<h:form id="searchCallCenterAgentForm" style="width:600px;"> <f:facet name="header">Call Center Agent Search</f:facet> <div class="dialog"><h:panelGrid columns="2" rowClasses="prop" columnClasses="name,value"> <h:outputLabel for="firstName">First Name</h:outputLabel> <h:inputText id="firstName" value="#{callCenterAgentManage.firstName}" style="width:150px" required="false"> <a:support event="onkeyup" actionListener="#{callCenterAgentManage.searchCallCenterAgent}" reRender="searchResults" /> </h:inputText> <h:outputLabel for="lastName">Last Name </h:outputLabel> <h:inputText id="lastName" value="#{callCenterAgentManage.lastName}" style="width:150px" required="false"> <a:support event="onkeyup" actionListener="#{callCenterAgentManage.searchCallCenterAgent}" reRender="searchResults" /> </h:inputText> </h:panelGrid></div> <div class="actionButtons"><a:commandButton value="Search" action="#{callCenterAgentManage.searchCallCenterAgent}" id="searchCallCenterAgent" reRender="searchResults" /></div> </h:form> </rich:panel> <rich:panel style="width:600px;"> <a:outputPanel id="searchResults"> <div class="section"><h:outputText value="No Agents Found" rendered="#{agentDetails != null and agentDetails.rowCount==0}" /> <h:dataTable id="agentDetails" value="#{agentDetails}" var="details" rendered="#{agentDetails.rowCount>0}"> <h:column> <f:facet name="header">User Name</f:facet> #{details.strUserName} </h:column> <h:column> <f:facet name="header">First Name</f:facet> #{details.person.strFirstName} </h:column> <h:column> <f:facet name="header">Last Name</f:facet> #{details.person.strLastName} </h:column> <h:column> <f:facet name="header">Account Status</f:facet> #{details.flgAccountStatus} </h:column> </h:dataTable> </a:outputPanel> </rich:panel>
Bean
private String firstName; private String lastName; @In Account account; @In FacesMessages facesMessages; @PersistenceContext private EntityManager em; @DataModel private List<Account> agentDetails; private String userName; public void searchCallCenterAgent() { // implement your business logic here log.info("callCenterAgentManage.searchCallCenterAgent() action called"); String searchQuery = "select " + "a, p " + "from Account a, Person p " + "where " + "a.flgAccountStatus!='i' " + "and a.flgDeleted='0' " + "and a.strUserName!='" + account.getStrUserName() + "' "; if (!firstName.equals("")) { searchQuery += "and lower(p.strFirstName) like #{firstNamePattern} "; } if (!lastName.equals("")) { searchQuery += "and lower(p.strLastName) like #{lastNamePattern} "; } searchQuery += " and a.person.ipersonId = p.ipersonId"; agentDetails = em.createQuery(searchQuery).getResultList(); log.info("Search query = " + searchQuery); log.info("Result count = " + agentDetails.size()); } Getters and setters -------------------- -------------------- --------------------
When I click search it says
Error:--
Exception during request processing: Caused by javax.servlet.ServletException with message: "/manage.xhtml: For input string: "strUserName""
Does anyone have any idea whats going wrong?
Thanks in advance
-Vikram