Free text search problem
cash1981 May 13, 2008 6:56 PMHello.
I am trying to have a textbox, where I want to be able to search for a Person. I want the textbox to search for firstname, lastname and ssn.
But whatever I do, I cannot retrieve the search parameter the user inputs. I have tried to put a person object with @In and @Out in my action, and bind that to the output text, but then I got a property not found exception.
My method findPersons always returns fritext is empty
.
SearchRegister.xhtml:
<ui:define name="body">
<h:messages globalOnly="true" styleClass="message" id="globalMessages"/>
<h:form id="personSearch" styleClass="edit">
<rich:simpleTogglePanel label="Person search parameters" switchType="ajax">
<s:decorate template="../layout/display.xhtml">
<ui:define name="label">Person</ui:define>
<h:inputText id="fritekstPerson" value="" title="fritekstPerson" />
</s:decorate>
</rich:simpleTogglePanel>
<div class="actionButtons">
<h:commandButton id="search" value="Search" action="#{searchRegisterManager.findPersons}"/>
</div>
</h:form>
<rich:panel>
<f:facet name="header">person search results</f:facet>
<div class="results" id="person">
<h:outputText value="The person search returned no results."
rendered="#{empty personerList}"/>
<rich:dataTable id="person" var="person" value="#{personerList}">
<h:column>
<f:facet name="header">personId</f:facet>
#{person.personId}
</h:column>
<h:column>
<f:facet name="header">lastname</f:facet>
#{person.lastname}
</h:column>
<h:column>
<f:facet name="header">firstname</f:facet>
#{person.firstname}
</h:column>
<h:column>
<f:facet name="header">ssn</f:facet>
#{person.ssn}
</h:column>
</rich:dataTable>
</div>
</rich:panel>
</ui:define>And my SearchRegisterManagerAction.java:
@Stateful
@Name("searchRegisterManager")
@Scope(ScopeType.SESSION)
public class SearchRegisterManagerAction implements SearchRegisterManager {
@PersistenceContext(type = EXTENDED)
private EntityManager em;
@In(required = false)
private String fritekstPerson;
@SuppressWarnings("unused")
@DataModel
private List<Person> personerList;
@Logger
private Log log;
@Factory("personerList")
@SuppressWarnings("unchecked")
public void findAllPersons() {
if (fritekstPerson == null || fritekstPerson.equals("")) {
log.info("Søker etter alle personer");
personerList = em.createQuery("from " + Person.class.getName() + " p order by p.etternavn").getResultList();
} else {
log.info("Søker etter spesifisert person");
personerList = em.createQuery("from " + Person.class.getName() + " p " +
"where p.fornavn like '%" + fritekstPerson + "%' " +
"OR p.etternavn like '%" + fritekstPerson + "%' " +
"OR p.personnummer like '%" + fritekstPerson + "%' " +
"order by p.etternavn").getResultList();
}
for (Person p : personerList) {
log.info("Personnr: " + p.getPersonnummer());
}
}
public void findPersons() {
if (fritekstPerson == null || fritekstPerson.equals("")) {
log.info("Whut, fritext is empty");
} else {
log.info("Søker etter spesifisert person");
personerList = em.createQuery("from " + Person.class.getName() + " p " +
"where p.fornavn like '%" + fritekstPerson + "%' " +
"OR p.etternavn like '%" + fritekstPerson + "%' " +
"OR p.personnummer like '%" + fritekstPerson + "%' " +
"order by p.etternavn").getResultList();
}
}
@Destroy
@Remove
public void destroy() {
}
}Help is greatly appreciated.