[ http://issues.apache.org/jira/browse/TAPESTRY-1043?page=all ]
Jesse Kuhnert resolved TAPESTRY-1043.
-------------------------------------
Resolution: Invalid
I would try two things:
-) Change the method for getting your model to a non static getter and make the
instance you return static.
-) Change the signature of your method to return IPropertySelectionModel
instead of your specific type.
> "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]