[jboss-user] [JBoss Seam] - Re: Trinidad SelectManyShuttle with seam ?
gjeudy
do-not-reply at jboss.com
Mon Feb 4 16:37:44 EST 2008
Yes I figured later you can use both trinidad and richfaces.
I switched to rich:listShuttle component which did not require me any extra coding, I just kept using the same backing bean. The rich:listShuttle works as expected, I had to add the seam entity converter in converter attribute though, converter="#{org.jboss.seam.ui.entityConverter}"
Below is the backing bean code in case you still want to look at it.
package a.b.c;
|
| import java.text.ParseException;
| import java.util.Calendar;
| import java.util.Date;
| import java.util.List;
|
| import javax.ejb.Remove;
| import javax.ejb.Stateful;
| import javax.persistence.EntityManager;
| import javax.persistence.PersistenceContext;
|
| import org.jboss.seam.ScopeType;
| import org.jboss.seam.annotations.Destroy;
| import org.jboss.seam.annotations.Factory;
| import org.jboss.seam.annotations.In;
| import org.jboss.seam.annotations.Logger;
| import org.jboss.seam.annotations.Name;
| import org.jboss.seam.annotations.Out;
| import org.jboss.seam.annotations.Scope;
| import org.jboss.seam.core.FacesMessages;
| import org.jboss.seam.log.Log;
|
| import a.b.c.d.RefReleasePackage;
| import a.b.c.d.e.RefReleasePackageItemImpl;
| import a.b.c.d.ReferenceDomain;
| import a.b.c.d.e.RefDomainSearchActionLocal;
| import a.b.c.d.ReleasePackageService;
| import a.b.c.d.CommonUtils;
| import a.b.c.d.RDMConstants;
|
| @Stateful
| @Name("refDomainSearch")
| @Scope(ScopeType.SESSION)
| public class RefDomainSearchActionBean implements RefDomainSearchActionLocal {
|
| @PersistenceContext(unitName = RDMConstants.RDM_PERSISTENCE_UNIT_NAME)
| private EntityManager em;
|
| @Logger
| private Log log;
|
| private String searchString;
| private int pageSize;
| private int page;
|
| private List<ReferenceDomain> refDomains;
|
| private List<ReferenceDomain> selectedRefDomains;
|
|
| @In(required = true, create=true)
| @Out(required = true, scope = ScopeType.SESSION)
| private ReleasePackageService releasePackageService;
|
| @In(required = false)
| @Out(required = false)
| private RefReleasePackage relPkg;
|
| public void find() {
| page = 0;
| queryRefDomains();
| }
|
| public void nextPage() {
| page++;
| queryRefDomains();
| }
|
| public boolean isNextPageAvailable() {
| return refDomains != null && refDomains.size() == pageSize;
| }
|
| /**
| * TODO Could write this HQL using Criteria programming model instead.
| * Then you get compile time validation of the query.
| */
| @SuppressWarnings("unchecked")
| public void queryRefDomains() {
|
| // TODO optimize the fetching takes around 25 secs today.
| refDomains = em.createQuery(
| "select rd from ReferenceDomainImpl rd " +
| "where lower(rd.domainName) like #{pattern} or lower(rd.domainDescription) like #{pattern} " +
| "or exists ( from ReferenceDomainInstanceImpl rdi " +
| "where rdi.referenceDomain.id = rd.id " +
| "and " +
| "(lower(rdi.codeValue) like #{pattern} " +
| "or lower(rdi.shortDescription) like #{pattern} " +
| "or lower(rdi.description) like #{pattern}))" +
| "order by rd.domainName")
| .setMaxResults(pageSize).setFirstResult(page * pageSize).getResultList();
| }
|
| public int getPageSize() {
| return pageSize;
| }
|
| public void setPageSize(int pageSize) {
| this.pageSize = pageSize;
| }
|
| @Factory(value = "pattern", scope = ScopeType.EVENT)
| public String getSearchPattern() {
| return searchString == null ? "%" : '%' + searchString.toLowerCase().replace('*', '%') + '%';
| }
|
| public String getSearchString() {
| return searchString;
| }
|
| public void setSearchString(String searchString) {
| this.searchString = searchString;
| }
|
|
| public List<ReferenceDomain> getRefDomains() {
| return refDomains;
| }
|
| public List<ReferenceDomain> getSelectedRefDomains() {
| return selectedRefDomains;
| }
|
| public void setSelectedRefDomains(List<ReferenceDomain> selectedRefDomains) {
| this.selectedRefDomains = selectedRefDomains;
| }
|
| /**
| * TODO remove from bean, just added for tests.
| * @return
| */
| public String updatePackageItems() {
| log.info("Inside ReleasePackageAction.updatePackageItems");
|
| Date toDate = null;
| try {
| toDate = CommonUtils.getSQLDateFromString(RDMConstants.DEFAULT_VALID_TO_DT);
| } catch (ParseException pe) {
| throw new RuntimeException(pe);
| }
|
| for (ReferenceDomain refDomain : selectedRefDomains) {
| RefReleasePackageItemImpl item = new RefReleasePackageItemImpl(refDomain, relPkg, Calendar.getInstance().getTime(), toDate);
|
| relPkg.addRefReleasePackageItem(item);
| }
| selectedRefDomains.clear();
| relPkg = releasePackageService.updateReleasePackage(relPkg);
| FacesMessages.instance().add("Release Package: #{relPkg.releasePackageNm} is successfully updated");
| return "/editPackageItems.seam";
| }
|
| @Destroy
| @Remove
| public void destroy() {
| }
| }
Thanks,
-Guillaume
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4126355#4126355
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4126355
More information about the jboss-user
mailing list