2013-03-26 3 views
0

J'ai affiché une table en utilisant l'itérateur avec un bouton radio pour chaque rangée, basé sur la ligne sélectionnée Je veux effectuer des opérations d'édition et de suppression en cliquant sur un bouton. Comment puis-je récupérer toutes les valeurs de la ligne sélectionnée en cliquant sur Modifier ou Supprimer le bouton?Comment récupérer les valeurs de la ligne sélectionnée à l'aide du bouton radio dans Struts2?

Ceci est mon code:

<s:iterator value="List" var="Bean"> 
     <tr> 
     <td><s:radio theme="simple" name="ID" list="#{'ID':''}"/> 

     </td> 
     <td ><s:property value="ID"/></td> 
     <td ><s:property value="NAME"/></td> 
     <td ><s:property value="STATUS"/></td> 
     <td ><s:property value="TYPE"/></td>  
</tr> 

</s:iterator> 

En utilisant s:radio je peux récupérer l'ID mais je veux récupérer toutes les valeurs de cette ligne sélectionnée.

Est-il possible de définir le bean uniquement pour la ligne sélectionnée afin que je récupère sa valeur dans la classe d'action?

L'ID est pas unique, donc je ne peux pas l'utiliser pour récupérer les valeurs de la ligne que je sélectionne

+0

Il suffit de le récupérer par l'ID donné de la base de données? – BalusC

+0

L'ID n'est pas sa clé primaire, il a une clé primaire composite – user2077648

+0

composite par quoi? Ajouter toutes les informations en éditant votre question s'il vous plaît –

Répondre

0

Dans votre code, vous ne disposez pas de fonctions d'édition, parce que vous utilisez balise <s:property/> qui affiche du texte seulement.

Pour les fonctionnalités d'édition, vous avez besoin d'un tag interactif, par exemple <s:textfield/>.

S'il vous plaît noter que vos valeurs ne sont pas standard List et Bean (et tous vos attributs), parce qu'ils devraient commencer par une lettre minuscule (getList() ->list, getBean() ->bean). Reportez-vous à la norme JavaBeans et utilisez la notation CamelCase.

<s:iterator value="list" var="bean" status="ctr"> 
    <tr> 
     <td> <s:radio name="selectedId" list="#{'id':''} 
         theme="simple" />      </td> 

     <td> <s:property value="id"/>       </td> 

     <td> <s:textfield name="bean[#ctr.index].name"/>  </td> 
     <td> <s:textfield name="bean[#ctr.index].status"/> </td> 
     <td> <s:textfield name="bean[#ctr.index].type"/>  </td> 
    </tr> 
</s:iterator> 

De cette façon, vous aurez besoin sur l'action:

@Getter @Setter private Long selectedId; 
@Getter @Setter private List<MyObject> list; 

et vous aurez accès à l'élément sélectionné en bouclant la liste, et ramasser le dossier dont le champ est id correspondant selectedId.

Vous pouvez le faire automatiquement en utilisant la propriété itérateur #ctr.index au lieu du id, mais la liste doit être synchronisée;

Vous pouvez réaliser cela automatiquement d'une manière vraiment meilleure en utilisant un Map au lieu d'une liste, et en utilisant id comme clé, et myObject comme valeur.

Profitez

+0

Merci pour la réponse, mais le problème est que l'ID n'est pas unique – user2077648

+0

Comment puis-je obtenir la valeur de la liste d'une action à l'autre? Ai-je besoin d'utiliser des sessions? – user2077648

Questions connexes