"Could not find a strategy instance for class RubricSelectionModel" when 
working with PropertySelection component 
------------------------------------------------------------------------------------------------------------------

                 Key: TAPESTRY-1043
                 URL: http://issues.apache.org/jira/browse/TAPESTRY-1043
             Project: Tapestry
          Issue Type: Bug
          Components: Core, Framework, Web
    Affects Versions: 4.0.2
         Environment: apache-tomcat-5.5.17
            Reporter: Vitaly Baranovsky


I've created page with PropertySelection component as written at 
http://tapestry.apache.org/tapestry4/tapestry/ComponentReference/PropertySelection.html.
 But it displays error "Could not find a strategy instance for class 
net.mycompany.portal.news.newslist.RubricSelectionModel". 

Same effect is in servlet and in portlet.

My sources: 
Edit.html: 
<form jwcid="stockQuoteForm"> 
<input type="text" jwcid="stockId"/> 
<select jwcid="rubricSelection"></select> 
<input type="submit" value="OK"/> 
</form> 

Edit.page: 
<?xml version="1.0"?> 
<!DOCTYPE page-specification PUBLIC 
"-//Apache Software Foundation//Tapestry Specification 4.0//EN" 
"http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd";> 
<page-specification 
class="net.mycompany.portal.news.newslist.NewsListEditPage"> 
      <component id="stockQuoteForm" type="Form"> 
            <binding name="listener" value="listener:onOk"/> 
      </component> 
      <component id="stockId" type="TextField"> 
            <binding name="value" value="ognl:stockId"/> 
      </component> 
      <component id="rubricSelection" type="PropertySelection"> 
            <binding name="model" value="ognl:rubricSelectionModel"/> 
            <binding name="value" value="ognl:currentRubric"/> 
      </component> 
</page-specification> 



NewListEditPage.java: 
package net.mycompany.portal.news.newslist; 

import java.io.IOException; 

import javax.portlet.PortletPreferences; 
import javax.portlet.ReadOnlyException; 
import javax.portlet.ValidatorException; 

import org.apache.tapestry.annotations.InjectObject; 
import org.apache.tapestry.html.BasePage; 

import net.mycompany.common.CommonRegistry; 

public abstract class NewsListEditPage extends BasePage { 

      @InjectObject("service:tapestry.portlet.PortletRequest") 
      public abstract javax.portlet.PortletRequest getPortletRequest(); 

      public abstract String getStockId(); 

      public abstract Rubric getCurrentRubric(); 

      public static RubricSelectionModel getRubricSelectionModel(){ 
            return new 
RubricSelectionModel(CommonRegistry.getRubricList()); 
      } 

      public void onOk() { 
            System.out.println("Listener called. Stock id is: " + 
getStockId()); 
            PortletPreferences prefs = 
getPortletRequest().getPreferences(); 
            try { 
                  prefs.setValue("DocCount", getStockId()); 
                  prefs.setValue("RubricId", 
getCurrentRubric().getId().toString()); 
                  prefs.store(); 
            } catch (ReadOnlyException e) { 
                  e.printStackTrace(); 
            } catch (ValidatorException e) { 
                  e.printStackTrace(); 
            } catch (IOException e) { 
                  e.printStackTrace(); 
            } 
      } 
} 



RubricSelectionModel.java: 
package net.mycompany.portal.news.newslist; 

import java.io.Serializable; 
import java.util.Iterator; 
import java.util.List; 

public class RubricSelectionModel implements IPropertySelectionModel, 
Serializable{ 
      private static final long serialVersionUID = 1L; 

      private List rubricList; 

        public RubricSelectionModel(List itemList) { 
            this.rubricList = itemList; 
        } 

        public int getOptionCount() { return rubricList.size(); } 

        public Object getOption(int index) { 
            return rubricList.get(index); 
        } 

        public String getLabel(int index) { 
            return ((Rubric) rubricList.get(index)).getName(); 
        } 

        public String getValue(int index) { 
              return ((Rubric) rubricList.get(index)).getId().toString(); 
        } 

        public Object translateValue(String value) { 
              Iterator e = rubricList.iterator(); 
              while(e.hasNext()){ 
                    Rubric rubric = (Rubric)e.next(); 
                    if(rubric.getId().toString() == value){ 
                          return rubric; 
                    } 
              } 
              return null; 
        } 
} 



Rubric.java: 
package net.mycompany.portal.news.newslist; 

import java.io.Serializable; 

public class Rubric implements Serializable{ 
      private static final long serialVersionUID = 1L; 

      private Integer id; 
      private String code; 
      private String name; 

      public String getCode() { 
            return code; 
      } 
      public void setCode(String code) { 
            this.code = code; 
      } 
      public Integer getId() { 
            return id; 
      } 
      public void setId(Integer id) { 
            this.id = id; 
      } 
      public String getName() { 
            return name; 
      } 
      public void setName(String name) { 
            this.name = name; 
      } 

      public Rubric(Integer id, String code, String name) { 
            super(); 
            this.id = id; 
            this.code = code; 
            this.name = name; 
      } 
} 



DBUtils.java: 
package net.mycompany.portal.utils; 

import java.sql.Connection; 
import java.sql.DatabaseMetaData; 
import java.sql.DriverManager; 
import java.sql.SQLException; 
import java.sql.Timestamp; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 

import javax.naming.InitialContext; 
import javax.naming.NamingException; 
import javax.sql.DataSource; 

import org.hibernate.SessionFactory; 
import org.hibernate.cfg.Configuration; 

public class DBUtils { 

      private static DataSource ds; 

      private static SessionFactory sessionFactory = new 
Configuration().configure() 
                  .buildSessionFactory(); 

      public static SessionFactory getSessionFactory() { 
            return sessionFactory; 
      } 

} 




portlet.xml: 
<portlet-app version="1.0" 
  xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"; 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
  xsi:schemaLocation= 
"http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd 
http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd";> 
  <portlet> 
    <description xml:lang="EN"></description> 
    <portlet-name>myportlet</portlet-name> 
    <display-name xml:lang="EN">My Tapestry Portlet</display-name> 
    <portlet-class>org.apache.tapestry.portlet.ApplicationPortlet</ 
portlet-class> 
    <expiration-cache>-1</expiration-cache> 
    <supports> 
      <mime-type>text/html</mime-type> 
      <portlet-mode>view</portlet-mode> 
      <portlet-mode>help</portlet-mode> 
    </supports> 
    <supported-locale>en</supported-locale> 
    <portlet-info> 
      <title>My Tapestry Portlet</title> 
      <short-title>tapestry-portlet</short-title> 
      <keywords></keywords> 
    </portlet-info> 
  </portlet> 
</portlet-app> 



web.xml: 
<!DOCTYPE web-app 
  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
  "http://java.sun.com/dtd/web-app_2_3.dtd";> 
<web-app> 
  <display-name>app</display-name> 
  <servlet> 
    <servlet-name>ApplicationServlet</servlet-name> 
    <servlet-class>org.apache.tapestry.ApplicationServlet</servlet-class> 
  </servlet> 
  <servlet-mapping> 
    <servlet-name>ApplicationServlet</servlet-name> 
    <url-pattern>/app</url-pattern> 
  </servlet-mapping> 
</web-app> 



hivemodule.xml: 
doesn't exists 


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to