you probably serialize it in some way (usually by persisting it) but it
is not serializeable.
either make it serializeable or remove the persisting code.
Cheers,
Ron
[EMAIL PROTECTED] wrote:
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]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]