Java 在不使用Hibernate的情况下使用@PageActivationContext

Java 在不使用Hibernate的情况下使用@PageActivationContext,java,tapestry,Java,Tapestry,在Tapestry中使用@PageActivationContext而不使用Hibernate有什么诀窍吗?我有以下页面: public class DisplayTopic { @PageActivationContext private Topic topic; } 在我的AppModule类中: @Contribute(ValueEncoderSource.class) public static void contributeValueEncoderSource(Map

在Tapestry中使用@PageActivationContext而不使用Hibernate有什么诀窍吗?我有以下页面:

public class DisplayTopic {
    @PageActivationContext
    private Topic topic;
}
在我的AppModule类中:

@Contribute(ValueEncoderSource.class)
public static void contributeValueEncoderSource(MappedConfiguration<Class<Topic>, ValueEncoderFactory<Topic>> configuration) {
    configuration.addInstance(Topic.class, TopicEncoder.class);
}

我已经查阅了好几次文档,但都不知道我做错了什么

你所做的看起来应该对我有用。我完全猜到了。。。但是您使用的是tapestry cometd还是tapestry atmosphere

这一问题对双方都有影响


该问题已在最新tapestry Comet中修复,但尚未在tapestry atmosphere中修复。

尝试向
TypeConverter
贡献,将
Str
转换为
Topic
。我试图重现您的错误,但无法重现!它对我有用。您使用的是什么版本的Tapestry5?你能发布主题的实现吗?看起来Topic是Main的一个子类。您是否尝试过将主题移动到它自己的java文件中?
public class TopicEncoder implements ValueEncoder<Topic>, ValueEncoderFactory<Topic> {

    @Override
    public String toClient(Topic value) {
        return value.getId();
    }

    @Override
    public Topic toValue(String clientValue) {
        return Start.data.getLocator().getTopicById(clientValue);
    }

    @Override
    public ValueEncoder<Topic> create(Class<Topic> type) {
        return this;
    }
}
Exception in method null, parameter #1: org.apache.tapestry5.ioc.util.UnknownValueException: Could not find a coercion from type java.lang.String to type Main.Topic.