2017-10-12 6 views
0

Eh bien, bien que cette question est quelque peu dupliquée, j'ai cherché sur le net ne pouvait toujours pas trouver le résultat exact ce que je veux. Dans mon cas, je développe un projet en JSF en utilisant Primefaces qui a la fonctionnalité CRUD. J'ai plus de 3k enregistrements dans p:dataTable. Si je veux mettre à jour les 5 enregistrements sélectionnés, je ne peux mettre à jour que l'ensemble de dataTable (prend beaucoup de temps).Comment faire pour mettre à jour les lignes sélectionnées Datatable dans JSF en utilisant Primefaces?

Scénario:

1) sélectionner les enregistrements dans Datatable
2) cliquez sur p:commandButton pour exécuter la logique métier et fournira le résultat pour les enregistrements sélectionnés. (Dans p:commandButton i utilisé datatable updation)

Note: Je ne peux obligé d'utiliser Primefaces. (J'ai trouvé omniFaces a la solution mais je ne devrais pas utiliser)

Pls m'aider!

Répondre

0

PrimeFaces vous permettra de mettre à jour le composant basé sur styleClass, en utilisant PrimeFacesSelectors (PFS).

update="@(.mystyle)"

Vous pouvez l'utiliser pour servir vos fins de mise à jour de ligne particulière datatable.
Voici la stratégie:
1. Définissez rowKey comme styleClass à chacune des colonnes de chaque ligne.
2. Utilisez ce rowKey au PFS pour votre attribut update.

Voici un court extrait de code:

<p:dataTable var="mov" value="#{repeatUIBean.mList}" ro> 
    <p:column headerText="mov Name"> 
     <h:outputText styleClass="#{mov.uniqueId}" value="#{mov.name}"/> 
    </p:column> 

    <p:column headerText="mov Release Year"> 
     <h:outputText styleClass="#{mov.uniqueId}" value="#{mov.year}"/> 
    </p:column> 

    <p:column headerText="Edit mov"> 
     <p:commandButton value="Edit" update="@(.#{mov.uniqueId})"/> 
    </p:column> 
</p:dataTable> 
+0

j'ai 30 colonnes, donc je dois écrire uniquieid pour toutes les colonnes. Pouvez-vous élaborer? –

+0

'uniqueId' n'a pas besoin d'être une propriété séparée sur votre bean java que vous chargez sur la datatable. Il suffit de choisir celui qui est proche de Unique dans votre haricot [De plus, c'est toujours une bonne idée d'avoir un fichier unique sur un haricot java]. SI tout ce que vous choisissez est répété dans un autre haricot, il mettra également à jour ces lignes. Par exemple dans mon exemple si je choisis '# {mov.name}' s'il y a une autre ligne avec le même nom de film alors il mettra à jour 2 lignes. Je l'utiliserais toujours car il vaut mieux mettre à jour quelques lignes que des données entières. –

+0

Dans mon cas, j'ai besoin de mettre à jour les lignes sélectionnées en utilisant le bouton de commande. Je sélectionne les lignes et clique sur le bouton de commande pour actualiser les lignes. –