Hi all,
I'm currently setting up Seam in an already working JSF based project. There is 
a hack that I wrote to call an action to init a bean when invoking a JSF page 
from a non-JSF servlet. I'm trying to replace it by a @Factory method but I'm 
really struggling here.

I'm running JSF on Resin web server using MyFaces implementation. I followed 
the setup instructions at chapter 21 of Seam documentation 
(http://docs.jboss.com/seam/1.2.1.GA/reference/en/html/configuration.html) and 
the bean is super simple, heavily inspired by the example found at: 
http://java.sys-con.com/read/180363.htm

Now my problem is that the @Factory method is never called and the server fails 
badly, giving me a blank page and throwing an ugly exception on the console:


  | javax.servlet.ServletException: Could not retrieve value of component with 
path : {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: 
/faces/dataview/news.jsp][Class: javax.faces.component.html.HtmlOutputText,Id: 
date]}
  |     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:154)
  |     at 
com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:106)
  |     at 
com.caucho.server.webapp.DispatchFilterChain.doFilter(DispatchFilterChain.java:115)
  |     at 
com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:229)
  |     at 
com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:277)
  |     at 
com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:106)
  |     at 
com.firstline.report.WebActionHandler.sendJSFPage(WebActionHandler.java:190)
  |     at 
com.firstline.report.WebActionHandler.sendPage(WebActionHandler.java:110)
  |     at 
com.firstline.report.WebActionHandler.service(WebActionHandler.java:89)
  |     at 
com.firstline.report.WebActionHandler.service(WebActionHandler.java:36)
  |     at com.firstline.servlet.IServer.doGet(IServer.java:106)
  |     at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
  |     at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
  |     at 
com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:106)
  |     at 
org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:63)
  |     at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
  |     at 
org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
  |     at 
org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:53)
  |     at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:79)
  |     at 
org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
  |     at org.jboss.seam.web.SeamFilter.doFilter(SeamFilter.java:84)
  |     at 
com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
  |     at 
com.firstline.servlet.filter.PersistenceSessionFilter.doFilter(PersistenceSessionFilter.java:34)
  |     at 
com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
  |     at 
com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:173)
  |     at 
com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:229)
  |     at 
com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:274)
  |     at com.caucho.server.port.TcpConnection.run(TcpConnection.java:511)
  |     at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:520)
  |     at com.caucho.util.ThreadPool.run(ThreadPool.java:442)
  |     at java.lang.Thread.run(Thread.java:595)
  | 

My Bean :


  | package com.mobicom.presentation.bean.page;
  | 
  | import java.io.Serializable;
  | import java.util.Date;
  | 
  | import org.jboss.seam.ScopeType;
  | import org.jboss.seam.annotations.Factory;
  | import org.jboss.seam.annotations.In;
  | import org.jboss.seam.annotations.Name;
  | import org.jboss.seam.annotations.Out;
  | import org.jboss.seam.annotations.Scope;
  | 
  | import com.mobicom.model.bo.Language;
  | import com.mobicom.model.bo.News;
  | import com.mobicom.model.dao.LanguageDAO;
  | import com.mobicom.presentation.bean.application.SessionBean;
  | import com.mobicom.presentation.resources.text.TextResource;
  | import com.mobicom.presentation.util.MessageHandler;
  | import com.mobicom.presentation.util.TextKey;
  | import com.mobicom.service.NewsService;
  | 
  | @Name("newsBean")
  | @Scope(ScopeType.SESSION)
  | public class NewsBean implements Serializable {
  |     
  |     private static final long serialVersionUID = 1L;
  |     @In
  |     ToolbarBean toolbarBean;
  |     @In
  |     SessionBean sessionBean;
  |     @Out
  |     Date postDate;
  |     @Out
  |     String postText;
  |     
  |     public String process(){
  | 
  |             try {
  |                     // update toolbar
  |                     
toolbarBean.setCurrentReport(ToolbarBean.CURRENT_REPORT_NOT_SET);
  |                     
toolbarBean.setPrinterFriendlyPath("/dynamic/faces/dataview/newsPF.jsf");
  |                     toolbarBean.setShowExportToExcel(false);
  |                     
toolbarBean.setReportName(TextResource.getTextResourceString(new 
TextKey("News"),null,sessionBean.getCurrentLocale()));
  |                     toolbarBean.setRefreshAction("newsBean.process");
  | 
  |                     Language language = 
LanguageDAO.getInstance().findByPk(sessionBean.getLanguageCode());
  |                     News news = NewsService.getInstance().findCurrentNews();
  |                     postDate = news.getNewsTime();
  |                     postText = news.getNewsDescription().getText(language);
  | 
  |             } catch (Exception ex){
  |                     MessageHandler.handleGenericException(ex);
  |                     return "error";
  |             }
  |             
  |             return "success";
  |     }
  |     
  |     @Factory("postDate")
  |     public void myFactory(){
  |             process();
  |     }
  |     
  |     public ToolbarBean getToolbarBean() {
  |             return toolbarBean;
  |     }
  | 
  |     public void setToolbarBean(ToolbarBean toolbarBean) {
  |             this.toolbarBean = toolbarBean;
  |     }
  | 
  |     public SessionBean getSessionBean() {
  |             return sessionBean;
  |     }
  | 
  |     public void setSessionBean(SessionBean sessionBean) {
  |             this.sessionBean = sessionBean;
  |     }
  | 
  |     public String getPostText() {
  |             return postText;
  |     }
  | 
  |     public void setPostText(String newsData) {
  |             this.postText = newsData;
  |     }
  | 
  |     public Date getPostDate() {
  |             return postDate;
  |     }
  | 
  |     public void setPostDate(Date postDate) {
  |             this.postDate = postDate;
  |     }
  | 
  | }
  | 

And my page:


  | <%@ taglib uri="/WEB-INF/taglib/myfaces_html.tld" prefix="h"%>
  | <%@ taglib uri="/WEB-INF/taglib/myfaces_core.tld" prefix="f"%>
  | <%@ taglib uri="/WEB-INF/taglib/tomahawk.tld" prefix="t"%>
  | 
  | <f:view locale="#{sessionBean.currentLocale}">
  | 
  |     <f:loadBundle 
basename="com.mobicom.presentation.resources.text.TextResource" var="text"/>
  | 
  |     <jsp:include page="/inc/page-top-1.jsp"/>
  |             <!-- window title -->
  |             <h:outputText id="pageTitle" 
value="<title>#{text['News']}</title>" escape="false"/>
  |     <jsp:include page="/inc/page-top-2.jsp"/>
  |     <jsp:include page="/inc/main-header.jsp"></jsp:include>
  | 
  |     <jsp:include page="/faces/dataview/debugInfo.jsp"/>
  | 
  |     <div class="content">
  | 
  |             <jsp:include page="/inc/toolbar.jsp"/>
  |     
  |             <div class="container">
  |                     
  |                     <h:form id="newsForm">
  |                             <table class="standardForm" style="width: 
100%;">
  |                                     <tr>
  |                                             <th><h:outputText 
id="dateLabel" value="#{text['Date']}"/></th>
  |                                             <th><h:outputText 
id="newsLabel" value="#{text['News']}" escape="false"/></th>
  |                                     </tr>
  |                                     <tr>
  |                                             <td style="text-align: center; 
width: 100; font-weight: normal; background-color: #F7F7FB; ">
  |                                                     <h:outputText id="date" 
value="#{newsBean.postDate}" escape="false">
  |                                                             
<f:convertDateTime pattern="yyyy-MM-dd" timeZone="#{sessionBean.timeZone}"/>
  |                                                     </h:outputText>
  |                                             </td>
  |                                             <td style="text-align: center; 
font-weight: normal; background-color: #F7F7FB;">
  |                                                     <h:outputText id="text" 
value="#{newsBean.postText}" escape="false"/>
  |                                             </td>
  |                                     </tr>
  |                             </table>
  |                             <table class="dataTableFooter" style="width: 
100%;">
  |                                     <tr>
  |                                             <td>
  |                                                     <h:commandLink 
id="reloadLink" action="#{newsBean.process}">
  |                                                             <h:outputText 
id="reloadLinkLabel" value="#{text['Reload']}"/>
  |                                                     </h:commandLink>
  |                                             </td>
  |                                     </tr>
  |                             </table>
  |                     </h:form>
  |             </div><!-- end div: container -->
  | 
  |     </div><!-- end div: content -->
  |     
  |     <jsp:include page="/inc/main-footer.jsp"/>
  |     <jsp:include page="/inc/page-bottom.jsp"/>
  |     
  | </f:view>
  | 

Thanks for helping!
Math



View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4046203#4046203

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4046203
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to