Struts2 dynamiquement ajouter, de supprimer la liste des objets à partir de la page
Je suis en train de construire une page sur Struts2 qui ajoute des valeurs d'une table de base de données. Le problème est, la page doit permettre aux utilisateurs de saisir plusieurs lignes de la table de base de données. Lorsque l'utilisateur clique sur envoyer, il faut lire et écrire les lignes de la table de base de données. Les utilisateurs peuvent ajouter ou supprimer des lignes à partir de la page
Donc j'ai essayé de rendre une valeur de Liste à la page. Java code ressemble à ceci:
List<Testimate> estimates;
private String removeIndex;
public String execute() throws Exception {
estimates = new ArrayList<Testimate>();
for(int i = 0; i < INITIAL_ESTIMATES; i++)
estimates.add(new Testimate());
return INPUT;
}
public String add() {
estimates.add(new Testimate());
System.out.println(estimates.size());
return INPUT;
}
public String remove() {
estimates.remove(Integer.parseInt(getRemoveIndex()));
System.out.println(estimates.size() + " " + getRemoveIndex());
return INPUT;
}
And the page looks something like this:
<script>
setRemoveIndex()
{
$('input[name="removeIndex"]').val(removeIndex);
return true;
}
</script>
<s:form theme="custom" onsubmit="setRemoveIndex()">
<s:submit action="CEST02_add" cssClass="ButtonSmall" value="Add estimate" />
<s:hidden name="removeIndex"/>
<table>
<s:iterator value="estimates" var="estimate" status="status">
<tr>
<td><s:textfield name="estimates[%{#status.index}].name"cssClass="product" /></td>
<td><s:textfield name="estimates[%{#status.index}].price"cssClass="product" /></td>
<td><s:textfield name="estimates[%{#status.index}].date"cssClass="product" /></td>
<td><s:textfield name="estimates[%{#status.index}].attr"cssClass="product" /></td>
<td><s:submit action="CEST02_remove" cssClass="ButtonSmall" value="Remove this estimate" onclick="removeIndex=%{#status.index}"/>
</td>
</tr>
</s:iterator>
</table>
</s:form>
Et lorsque je clique sur "Ajouter estimer", il ajoute un élément à la liste des "estimations". Et il imprime la taille correctement. Mais lorsque je clique sur "Supprimer cette estimation", il ne change pas la liste des "estimations". Mais il imprime que la taille de la liste est réduite par un. Et quand je clique encore une fois, la taille ne change pas. Il ne reçoit pas de modification.
Pouvez-vous me dire quel est le problème avec ce code. J'ai peut-être un énorme malentendu comment ce cadre fonctionne. Si vous avez des questions ou des précisions, n'hésitez pas à
Mise à JOUR:
J'ai résolu mon problème avec les lignes suivantes sur mon JSP. Mais la question reste encore pourquoi je ne pouvais pas faire cela sur mon Action.
<s:iterator value="estimates" var="estimate" status="status">
<s:if test="#status.index != removeIndex">
onclick="removeIndex=%{#status.index}"/
Afin de savoir qui de la soumettre a cliqué, il enregistre le numéro d'index pour une variable. Puis il enlève le n-ième élément de la liste
avez-vous essayé avec le débogueur ce qui se passe exactement?
Je viens de débogage, et je ne pouvais pas obtenir quelque chose d'utile puisqu'il n'y a pas un fichier source pour hibernate classes.
mais comme par votre code son n'est pas n'importe où liée à Hibernate de ne pas je vois de tels appels dans votre classe d'action, et dans ce cas, difficile de dire quelque chose
OriginalL'auteur batbaatar | 2012-01-18
Vous devez vous connecter pour publier un commentaire.
J'ai essayé avec ton code et sa fonctionne très bien pour moi.Bien que je ne comprends pas l'intérieur de votre
Testimate
classe donc, à la place deList<Testimate> estimates
j'ai prisList<String> estimates;
.Voici mon code de travail.Classe D'Action
JSP
Struts.xml
Ce code ci-dessus est parfaitement suppression de la Liste, les valeurs et j'ai vérifié avec la page rafraîchissant aussi et les valeurs ne sont pas à revenir.
je n'ai pas thik si vous POJO/Modèle est détachée de mise en veille prolongée quoi il pourrait créer des problèmes pour vous
Je ne sais pas comment il est attaché à hibernate que beaucoup l'exception de la cartographie de la table de base de données. Le modèle n'implémente l'interface Serializable. Pouvez-vous m'expliquer pourquoi hibernate créer des problèmes?
c'est ma première suppose que si elles sont indépendantes de la couche ORM qu'il ne devrait pas être un problème autre modification de l'état de l'Objet peut causer hibernate pour mettre à jour son état de l'objet, mais encore je ne suis pas sûr qu'il peut être un cas.tout en vous supprimant les valeurs avez-vous vu un message de log liés à la couche ORM??
Ne pas montrer quoi que ce soit avec log4j.enregistreur.org.hibernate=DEBUG. Je pense qu'il a certaines affaires avec l'intercepteur qui ne le remplissage. Mais je ne pouvais pas trouver lequel
OriginalL'auteur Umesh Awasthi
Avez-vous essayé de rinçage de votre session Hibernate dans remove() après la suppression de l'article? Je pense que vos modifications ne sont pas engagés.
Définissez un point d'arrêt sur execute() et vérifier si votre commande est de se diriger vers elle. Est vous retirer d'action mis en place comme: <nom de l'action="supprimer" class="exemple.HelloWorld" method="supprimer"> <suite>/example/HelloWorld.jsp</résultat> </action>
Comme je l'ai mentionné ci-dessus, de l'imprimer à la taille de la liste et de l'index j'ai voulu supprimer
OriginalL'auteur Bruno Silva
Veuillez voir ci-dessous le code qui fonctionne pour moi comme prévu:
Classe D'Action
struts.xml
estimatePage.jsp
OriginalL'auteur James Jithin