I have this theoretical situation:
a form with
-
2 inputs [attributes
attr1,attr2of objectitem] **<h:inputText id="attr1" value="#{bean.item.attr1}"/> <h:inputText id="attr2" value="#{bean.item.attr2}"/> -
2 submit buttons [searching by
attr1,attr2in dtb] in foo.xhtml:<h:commandButton id="search1" action="#{bean.search1}" /> <h:commandButton id="search2" action="#{bean.search2}" />
and two very similar methods in bean.java:
public void search1(){
try
{
session = DaoSF.getSessionFactory().openSession();
Criteria criteria = session.createCriteria(Foo.class);
criteria.add(Restrictions.like("attr1", item.getAttr1()));
dataList = criteria.list();
}
catch (Exception e) {...}
}
public void search2(){
try
{
session = DaoSF.getSessionFactory().openSession();
Criteria criteria = session.createCriteria(Foo.class);
criteria.add(Restrictions.like("attr2", item.getAttr2()));
dataList = criteria.list();
}
catch (Exception e) {...}
}
Is there some way to merge these two methods to one?
UPDATE: and also merge action of commandButtons?
SOLUTION:
private void search(String field, String value)
action="#{bean.search('attr2', bean.item.attr1)}"
Just pass what’s different as a parameter: