Yes, I know.. :) I can try to create one. Here is my code where the problem occurs:
| <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | <ui:composition 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" | xmlns:s="http://jboss.com/products/seam/taglib" | xmlns:t="http://myfaces.apache.org/tomahawk" template="template.xhtml"> | | <ui:define name="pagemain"> | | <h:form> | | <table class="noborder"> | <tr> | <td>#{msgs.chain}:</td> | <td><h:selectOneMenu value="#{deliveryReport.search1}" | converter="#{chainSelect.converter}"> | <f:selectItems value="#{chainSelect.chainList2}" /> | </h:selectOneMenu> </td> | <td>#{msgs.filename}:</td> | <td><h:inputText value="#{deliveryReport.search2}" /> </td> | <td>#{msgs.notes}:</td> | <td><h:inputText value="#{deliveryReport.search3}" /> </td> | | | </tr> | <tr> | <td>#{msgs.from}:</td> | <td><t:inputDate value="#{deliveryReport.date1}" type="date" | popupCalendar="true" ampm="true" /> </td> | <td>#{msgs.to}:</td> | <td><t:inputDate value="#{deliveryReport.date2}" type="date" | popupCalendar="true" ampm="true" /> </td> | <td colspan="2"><h:commandButton class="button" type="submit" | value="#{msgs.find}" action="#{deliveryReport.findFirstPage}" /> </td> | </tr> | </table> | | <br /> | <br /> | <h:outputText styleClass="caption" | value="#{msgs.nostatusesfound}" | rendered="#{deliveryReport.noMessages}" /> | | <h:outputText styleClass="caption" | value="#{deliveryReport.reportData.chainDescription}" | rendered="#{deliveryReport.reportData.summariesByDate != null}" /> | <br /> | <br /> | | <ui:repeat value="#{deliveryReport.reportData.summariesByDate}" | var="bydate" | rendered="#{deliveryReport.reportData.summariesByDate != null || deliveryReport.reportData.summariesByDate.size > 0}"> | | <h:outputText styleClass="caption" value="#{bydate.date}"> | <f:convertDateTime timeZone="#{helper.timeZone}" type="date" | dateStyle="medium" timeStyle="medium" /> | </h:outputText> | <br /> | <br /> | | <table border="0" width="600" cellspacing="1" cellpadding="0"> | <thead> | <tr> | <th class="caption">#{msgs.eventdate}</th> | <th class="caption">#{msgs.eventtime}</th> | <th class="caption">#{msgs.filename}</th> | <th class="caption"> </th> | </tr> | | </thead> | <tbody> | <br /> | <ui:repeat value="#{bydate.summaries}" var="s"> | | <tr> | <td class="td100"><h:outputText value="#{s.eventdate}"> | <f:convertDateTime timeZone="#{helper.timeZone}" type="date" | dateStyle="medium" /> | </h:outputText></td> | <td class="td100"><h:outputText value="#{s.eventtime}"> | <f:convertDateTime timeZone="#{helper.timeZone}" type="time" | timeStyle="medium" /> | </h:outputText></td> | | <td class="td300">#{s.filename}</td> | | <td class="td100"><s:link | action="#{deliveryReportDetails.showDetails}" | value="[ #{msgs.details} ]"> | <f:param name="summaryid" value="#{s.id}" /> | </s:link></td> | | </tr> | </ui:repeat> | | <tr> | <td span="4"> </td> | </tr> | | <tr> | <td span="4">#{msgs.total}: <h:outputText | value="#{bydate.deliveredMessages}" /></td> | </tr> | | </tbody> | </table> | <br /> | </ui:repeat> | | <table width="300" class="noborder"> | <tr> | <td align="left" class="td150"><h:commandButton class="button" | action="#{deliveryReport.findPreviousPage}" | value="#{msgs.previouspage}" | rendered="#{deliveryReport.previousPage}" /></td> | <td align="left" class="td150"><h:commandButton class="button" | action="#{deliveryReport.findNextPage}" value="#{msgs.nextpage}" | rendered="#{deliveryReport.nextPage}" /></td> | </tr> | </table> | | <br /> | <br /> | | </h:form> | | </ui:define> | | <ui:define name="pagemenu"> | </ui:define> | | </ui:composition> | | This s:link | <s:link action="#{deliveryReportDetails.showDetails}"value="[ #{msgs.details} ]"><f:param name="summaryid" value="#{s.id}" /> </s:link> | Generates link with url | http://webtech/ServiceConsole/deliveryreport.jsf?summaryid=1103769?actionMethod=deliveryreport.xhtml%3AdeliveryReportDetails.showDetails&cid=16 | And the action bean is | package fi.logiasoftware.messageserver.frontend; | | import java.io.Serializable; | import java.util.Date; | import java.util.HashMap; | import java.util.List; | import java.util.Map; | import java.util.TimeZone; | import java.util.Map.Entry; | import javax.ejb.Remove; | import javax.ejb.Stateful; | import javax.interceptor.Interceptors; | import javax.persistence.EntityManager; | import javax.persistence.PersistenceContext; | import javax.persistence.Query; | import javax.persistence.TemporalType; | import org.jboss.annotation.ejb.SerializedConcurrentAccess; | import org.jboss.annotation.ejb.cache.simple.CacheConfig; | import org.jboss.seam.ScopeType; | import org.jboss.seam.annotations.Destroy; | import org.jboss.seam.annotations.Factory; | import org.jboss.seam.annotations.Name; | import org.jboss.seam.annotations.Scope; | import org.jboss.seam.ejb.SeamInterceptor; | import fi.logiasoftware.messageserver.config.Chain; | import fi.logiasoftware.messageserver.config.Summary; | import fi.logiasoftware.messageserver.services.common.Util; | | /** | * | * This class is a Stateful bean.It is used to view summarynotes of a specific | * summary. | * | * @Stateful | * @Name("deliveryReport") | * @Scope(ScopeType.SESSION) | * @SerializedConcurrentAccess | * @Interceptors(SeamInterceptor.class) | * | * @CacheConfig(idleTimeoutSeconds=1800) | * | * | * implements Serializable, DeliveryReport | * | * | * | * @author hbm2java (latest modification by $Author: sam $) | * @version $Revision: 1.14 $ $Date: 2006/10/20 08:51:04 $ | */ | @Stateful | @Name("deliveryReport") | @Scope(ScopeType.SESSION) | @CacheConfig(idleTimeoutSeconds = 1800) | @Interceptors(SeamInterceptor.class) | @SerializedConcurrentAccess | public class DeliveryReportBean implements Serializable, DeliveryReport { | | private static final long serialVersionUID = 1L; | | @PersistenceContext(unitName = "MessageServer") | private EntityManager em; | | private int pageSize = 1; | private int pageNumber = 0; | private int numberOfPages = 0; | private DeliveryReportData reportData; | private Chain search1 = new Chain(); | private Date date1; | private Date date2; | private String search2; | private String search3; | private boolean noMessages = false; | | /** | * Set reportData to null and set dates | */ | | public String begin() { | date1 = Util.getNow(); | date2 = Util.getNow(); | reportData = null; | | return "delivery_report"; | } | /** | * | * @return value on noMessages as boolean | */ | public boolean getNoMessages(){ | return this.noMessages; | } | | /** | * Get value of search3 field | */ | public String getSearch3() { | return search3; | } | | /** | * Set value of search3 field | */ | public void setSearch3(String search3) { | if (search3.startsWith("*") == true || search3.endsWith("*") == true) { | search3 = search3.replace('*', '%'); | } | this.search3 = search3; | } | | /** | * Get value of search2 field | */ | public String getSearch2() { | return search2; | } | | /** | * Set value of search2 field | */ | public void setSearch2(String search2) { | if (search2.startsWith("*") == true || search2.endsWith("*") == true) { | search2.replace('*', '%'); | } | this.search2 = search2; | } | | /** | * Get reportData | */ | public DeliveryReportData getReportData() { | return reportData; | } | | /** | * Set reportData | */ | public void setReportData(DeliveryReportData reportData) { | this.reportData = reportData; | } | | /** | * Get TimeZone | */ | public TimeZone getTimeZone() { | return TimeZone.getDefault(); | } | | /** | * Get date1 | */ | public Date getDate1() { | return date1; | } | | /** | * Set date1 | */ | public void setDate1(Date date1) { | this.date1 = date1; | } | | /** | * Get date2 | */ | public Date getDate2() { | return date2; | } | | /** | * Set date2 | */ | public void setDate2(Date date2) { | this.date2 = date2; | } | | /** | * Get value of search1 field | */ | public Chain getSearch1() { | return search1; | } | | /** | * Set value of search1 field | */ | public void setSearch1(Chain newValue) { | this.search1 = newValue; | } | | /** | * Get pageSize | */ | public int getPageSize() { | return pageSize; | } | | /** | * Set pageSize | */ | public void setPageSize(int pageSize) { | this.pageSize = pageSize; | } | | /** | * @return : boolean value is there previous page | */ | public boolean isPreviousPage() { | return reportData != null && pageNumber > 0; | } | | /** | * @return : boolean value is there next page | */ | public boolean isNextPage() { | return reportData != null && reportData.getSummariesByDate() != null | && numberOfPages - 1 > pageNumber; | } | | /** | * Creates and executes query to get Summary's pageSize is the amount of | * results showed on each page. Results are grouped by eventdate. | * | */ | @SuppressWarnings("unchecked") | public void executeQuery() { | noMessages = false; | Map<String, Object> parameters = new HashMap<String, Object>(); | Chain chain = em.find(Chain.class, search1.getId()); | | StringBuffer queryString = new StringBuffer(); | queryString.append("from Summary s where"); | | reportData = new DeliveryReportData(); | reportData.setChainDescription(chain.getDescription()); | queryString.append(" s.chain = :chain"); | parameters.put("chain", chain); | queryString.append(" and s.eventdate >= :date1"); | parameters.put("date1", getDate1()); | queryString.append(" and s.eventdate <= :date2"); | parameters.put("date2", getDate2()); | | if (search2 != null && search2.length() > 0) { | queryString.append(" and s.filename like :search2"); | parameters.put("search2", getSearch2()); | } | if (search3 != null && search3.length() > 0) { | queryString.append(" and s.summarynoteses.note like :search3"); | parameters.put("search3", getSearch3());// + "%"); | } | | queryString.append(" group by s.eventdate"); | | Query query = em.createQuery(queryString.toString()); | | for (Entry<String, Object> param : parameters.entrySet()) { | | if (param.getValue() instanceof Date) { | query.setParameter(param.getKey(), (Date) param.getValue(), | TemporalType.TIMESTAMP); | } else { | query.setParameter(param.getKey(), param.getValue()); | } | } | numberOfPages = query.getResultList().size(); // antaa sivujen kpl | List<Summary> summaryDates = query.setMaxResults(pageSize) | .setFirstResult(pageSize * pageNumber).getResultList(); | | String secondQuery = "from Summary s where s.chain = :chain and s.eventdate = :date"; | | if (search2 != null && search2.length() > 0) { | secondQuery = secondQuery + " and s.filename like :search2"; | } | if (search3 != null && search3.length() > 0) { | secondQuery = secondQuery | + " and s.summarynoteses.note like :search3"; | } | | for (Summary s : summaryDates) { | | Query q = em.createQuery(secondQuery).setParameter("date", | s.getEventdate()).setParameter("chain", chain); | | if (search2 != null && search2.length() > 0) { | q.setParameter("search2", search2 + "%"); | } | if (search3 != null && search3.length() > 0) { | q.setParameter("search3", search3 + "%"); | } | | List<Summary> summaries = q.getResultList(); | | if (summaries != null && summaries.size() > 0) { | reportData.addSummary(s.getEventdate(), summaries); | } | } | | if (reportData == null || summaryDates == null || summaryDates.size() == 0) { | noMessages = true; | } | } | | /** | * | * calls executeQuery to get data for first page | * | * @Factory("reportData") | */ | @Factory("reportData") | public String findFirstPage() { | reportData = null; | pageNumber = 0; | executeQuery(); | return "delivery_report"; | } | | /** | * calls executeQuery to get data for nextpage | */ | public String findNextPage() { | if (pageNumber + 1 < numberOfPages) { | pageNumber++; | executeQuery(); | return "delivery_report"; | } else { | return null; | } | } | | /** | * calls executeQuery to get data for previouspage | */ | public String findPreviousPage() { | if (pageNumber - 1 >= 0) { | pageNumber--; | executeQuery(); | return "delivery_report"; | } else { | return null; | } | } | | /** | * If reportData is not null calls executeQuery to refress page. | */ | public void refresh() { | if (reportData != null) | executeQuery(); | } | | /** | * Removes and destroys | */ | @Remove | @Destroy | public void destroy() { | reportData = null; | } | | } | | -Juha- View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4011884#4011884 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4011884 _______________________________________________ jboss-user mailing list [email protected] https://lists.jboss.org/mailman/listinfo/jboss-user
