首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Seam框架如何使用EntityHome处理pages.xml中的组合主键?

Seam框架如何使用EntityHome处理pages.xml中的组合主键?
EN

Stack Overflow用户
提问于 2010-10-26 20:59:52
回答 1查看 466关注 0票数 1

Seam框架如何使用EntityHome处理pages.xml中的组合主键?

通常的方法是为entityHome组件分配一个ID,例如:

代码语言:javascript
运行
复制
<page view-id="/team-list.xhtml">
  <param name="club" value="#{clubHome.id}" converterId="javax.faces.Integer" validatorId="javax.faces.LongRange" />
</page>

这会将(原子) ID从URL分配给clubHome。

http://...?club=12345...

但是,应用于使用复合主键的实体的技术是什么呢?这里的键由(roundId,ordinalNumber)组成,给出了一个URL

http://...?round=143&group=1...

代码语言:javascript
运行
复制
<page view-id="/standings.xhtml">
  <param name="group" value="#{groupHome.setId(new GroupId(round???, group???))}" />
</page>

上面是为groupHome分配一个新的复合ID的无效尝试。这里的问题是如何引用URL参数。(有没有办法在pages.xml中创建临时变量?)

除此之外,我别无选择,只能将原子PK属性分配给一个或几个不同EntityHome组件中的成员变量,当然,这需要EntityHome子类使用建议的getter和setter:

代码语言:javascript
运行
复制
@Name("groupHome")
public class GroupHome extends EntityHome<Group>
{
    // temp var
    private Integer ordinalNumber;

    public void setOrdinalNumber(Integer ordinalNumber)
    {
        this.ordinalNumber = ordinalNumber;
    }

    public Integer getOrdinalNumber()
    {
        return ordinalNumber;
    }

}

在pages.xml中的用法如下:

代码语言:javascript
运行
复制
<page view-id="/standings.xhtml">
  <param name="round" value="#{roundHome.id}" />
  <param name="group" value="#{groupHome.ordinalNumber}" />
</page>

那么,这里的最佳实践是什么?我在"Seam in Action“和网络上都找不到使用复合主键的例子。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-27 00:50:46

您可以使用以下内容

将作用域标记为@ GroupId (ScopeType.EVENT)

代码语言:javascript
运行
复制
@Name("groupId")
@Scope(ScopeType.EVENT)
@AutoCreate
public class GroupId implements Serializable {

    private Integer id;
    private Integer ordinalNumber;

}

将您的页面设置为

代码语言:javascript
运行
复制
<page view-id="/standings.xhtml">
    <param name="round" value="#{groupId.id}" />
    <param name="group" value="#{groupId.ordinalNumber}"/>
    <action execute="#{groupHome.setId(groupId)}"/>
</page>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4023886

复制
相关文章

相似问题

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