Good day!

I'm developing portlet using Tapestry portlet technology (4.0.2). I've
created page with PropertySelection component. But it displays error "Could
not find a strategy instance for class
net.mycompany.portal.news.newslist.RubricSelectionModel".

How can I run my portlet successfully?

Please, help me!

Thanks!

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 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


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

Reply via email to