首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取组件tynamo/PropertyEditBlocks的参数“”selected“”失败:palette_set

读取组件tynamo/PropertyEditBlocks的参数“”selected“”失败:palette_set
EN

Stack Overflow用户
提问于 2012-10-18 00:50:00
回答 1查看 1K关注 0票数 0

我在Tapestry上遇到了tynamo模型模块(org.tynamo:tapestry- model -web:0.3.1:jar),我面临着一个我无法处理的问题。

我有两个实体:客户和合同。显然,一个客户有很多合同:

合同

代码语言:javascript
复制
@Entity
@BeanModels({ @BeanModel(reorder = "id") })
public class Contract {

    [...]

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="contract_id")
    public Long getId() {
        return id;
    }

    /**
     * @return the client
     */
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "client_id", nullable = true)
    public Client getClient() {
        return client;
    }

客户端

代码语言:javascript
复制
@Entity
@BeanModels({ @BeanModel(reorder = "id") })
public class Client{

    [...]

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "client_id")
    public Long getId() {
        return id;
    }

    /**
     * @return the contracts
     */
    @OneToMany(cascade = { CascadeType.ALL })
    public List<Contract> getContracts() {
        return contracts;
    }

当我尝试创建一个新的客户端时,如果我排除了合同,则一切正常

代码语言:javascript
复制
@BeanModels({ @BeanModel(exclude = "contrats") })

但是,如果我尝试添加一个而不排除合同,我会得到以下异常:

代码语言:javascript
复制
ERROR] pages.Add Render queue error in SetupRender[tynamo/PropertyEditBlocks:palette_set]: Failure reading parameter 'selected' of component tynamo/PropertyEditBlocks:palette_set: org.apache.tapestry5.ioc.internal.util.TapestryException
org.apache.tapestry5.ioc.internal.util.TapestryException: Failure reading parameter 'selected' of component tynamo/PropertyEditBlocks:palette_set: org.apache.tapestry5.ioc.internal.util.TapestryException [at classpath:org/tynamo/pages/PropertyEditBlocks.tml, line 39]
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.invoke(ComponentPageElementImpl.java:153)
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$SetupRenderPhase.render(ComponentPageElementImpl.java:181)
    at org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:72)
    at org.apache.tapestry5.internal.services.PageRenderQueueImpl.render(PageRenderQueueImpl.java:124)
    at $PageRenderQueue_419b37801cb0d.render(Unknown Source)
    at $PageRenderQueue_419b37801cb0c.render(Unknown Source)

根据我对调色板组件的理解,这意味着应该显示默认的选定值...不是的!什么是确切的,因为没有缺省值!

如果我直接在数据库(MySQL)中添加一个客户端,并且没有从我的实体中排除这个字段,我可以毫无问题地显示和编辑它,但在添加新的客户端时仍然会出现问题。

我错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-18 15:14:03

只需确保您的合同列表始终具有非空值。

代码语言:javascript
复制
@Entity
@BeanModels({ @BeanModel(reorder = "id") })
public class Client{

    private List<Contract> contracts = new ArrayList<Contract>();

    @OneToMany(cascade = { CascadeType.ALL })
    public List<Contract> getContracts() {
        return contracts;
    }

[...]

}

顺便说一句,注意客户和合同之间的双向关系。在这种情况下,我认为您正在尝试映射同一关系的两个方面,但实际上您是在映射两个不同的关系。双向关系总是很棘手,但这是另一个问题。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12939309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档