Comment Seam Framework gère-t-il les clés primaires composites dans pages.xml en utilisant EntityHome?Comment Seam Framework gère-t-il les clés primaires composites dans pages.xml en utilisant EntityHome?
L'approche habituelle est d'attribuer une carte d'identité aux composants entityHome, comme:
<page view-id="/team-list.xhtml">
<param name="club" value="#{clubHome.id}" converterId="javax.faces.Integer" validatorId="javax.faces.LongRange" />
</page>
Cela affecte le (atomique) ID à clubHome de l'URL
mais Quelle est la technique à appliquer pour les entités utilisant des clés primaires composites? Ici, la clé est composée de (roundId, ordinalNumber), donnant une URL
http://...?round=143&group=1 ...
<page view-id="/standings.xhtml">
<param name="group" value="#{groupHome.setId(new GroupId(round???, group???))}" />
</page>
Ce qui précède est une tentative non-travail pour affecter un nouvel ID composite à groupHome. Le problème ici est de savoir comment référencer les paramètres d'URL. (Existe-t-il un moyen de créer des vars temp dans pages.xml?)
A part cela, je ne vois pas d'autre moyen que d'assigner les propriétés PK atomiques aux variables membres dans un ou plusieurs composants EntityHome différents, nécessitant bien sûr EntityHome sous-classes avec resprective accesseurs:
@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;
}
}
Utilisé comme suit à partir pages.xml:
<page view-id="/standings.xhtml">
<param name="round" value="#{roundHome.id}" />
<param name="group" value="#{groupHome.ordinalNumber}" />
</page>
Alors, quelle est la meilleure pratique ici? Je ne trouve aucun exemple utilisant des clés primaires composites dans "Seam in Action" ni dans/sur le net.
Où avez-vous été? :) (+1) –
@Kawu Vous préférez utiliser un autre nom que ** id ** lorsque vous avez une clé primaire composite –
@Pascal Thivent Pas de temps libre. Je travaille sur un projet corporatif qui consomme mon temps. C'est open source. Je vous notifierai quand publié. Merci quand même. –