Le principe de l'ajout d'une partie du produit est le même que l'ajout d'une catégorie de produit. Reportez-vous à l'article: Ajout et mise à jour d'une catégorie de produits , mais il est plus compliqué qu'une catégorie de produit. Parce qu'il existe de nombreux attributs du produit, il y a plus de champs dans la base de données correspondante. Il existe également une option pour ajouter un produit pour télécharger des photos. Ce petit contenu sera expliqué séparément dans le prochain article, car cela implique un point de connaissance, à savoir que Struts2 implémente la fonction de téléchargement de fichiers. Je ne dirai pas beaucoup plus. Maintenant, je vais commencer à améliorer le code pour l'ajout de la partie du produit:
1. Ajouter des produits
1.1 Ajout de l'implémentation d'interface utilisateur pour les produits <br /> Terminez d'abord le code pour ajouter une pièce de produit dans Query.jsp:
Ensuite, examinons l'implémentation spécifique dans Save.jsp:
<% @ Page Language = "Java" Import = "Java.util. *" Pageencoding = "UTF-8"%> <! Doctype Html public "- // w3c // dtd html 4.01 transitional // en"> <html> marge: 10px; } </ style> <script type = "text / javascript"> $ (function () {// Méthode de vérification personnalisée enregistre la nouvelle fonction $ .Extend ($. Fn.Validatebox.defaults.rules pour validerbox.defaults.rules, {// le nom de la fonction: {le corps d'implémentation de la fonction (un objectif json Message)} Format: {// L'implémentation de la fonction, si elle renvoie false, la vérification échoue à Validator: Fonction (valeur, param) {// Obtenez le nom du suffixe du fichier actuel var ext = Value.SubString / Value.LastIndexof ('.') + 1); i <arr.length; i ++) {if (ext == arr [i]) true;} return false; Dans le format JSON et l'envoyer à URL: 'catégorie_query.action', ValueField: 'Id', TextField: 'Type', // La liste de drop-down affiche toutes les catégories de produits PannelHeight: 'Auto', // Adaptive Height PanelWidth: 120, // La liste Drop-Down est une largeur: 120 composée de deux composants, // Not The Administration: FAUX MUST BEA Édition // ComboBox Hérite du Combo Hérite de validate, vous pouvez donc définir la vérification directement ici requise: true, manquingMessage: 'Veuillez sélectionner la catégorie'}); $ ("input [name = name]"). validatebox ({requis: true, manquingMessage: 'Veuillez entrer le nom du produit'}); $ ("Input [name = prix]"). Numberbox ({requis: true, manquingMessage: 'Veuillez entrer le prix du produit', min: 0, précision: 2, // conserver deux décimales préfix: '$'}); $ ("input [name = 'fileimage.upload']"). validatebox ({required: true, manquingMessage: 's'il vous plaît télécharger l'image du produit', // définir la méthode personnalisée validType: "Format ['gif, jpg, jpeg, png']" // Les crochets sont paramètres}); $ ("textArea [name = Remark]"). ValidateBox ({requis: true, manquingMessage: 'Veuillez entrer une description simple du produit'}); $ ("textArea [name = xRemark]"). ValidateBox ({requis: true, manquingMessage: 'Veuillez entrer une description simple du produit'}); $ ("textArea [name = xRemark]"). ValidateBox ({requis: true, manquingMessage: 'Veuillez entrer une description simple du produit'}); // désactiver la vérification $ ("# ff"). Form ("DisableValidation"); // Enregistrer l'événement du bouton $ ("# soumi"). Cliquez sur (fonction () {// activer la vérification $ ("# ff"). Form ("activervalidation"); // si la vérification est réussie, soumettez les données si ($ ("# ff"). Succès:) {// Si réussi, fermez la fenêtre actuelle. $ ("# win"). // événements $ ("# réinitialisation"). Cliquez sur (fonction () {$ ("# ff"). Form ("DisableValidation"); // Réinitialisation ne nécessite pas de vérification de formulaire // réinitialiser les données de formulaire actuelles $ ("# ff"). Form ("réinitialiser");}); }); </ script> </ head> <body> <form id = "ff" metheth = "Post" EncType = "multipart / form-data"> <div> <vabe> Nom du produit: </ label> prix du produit: </ label> <étiquette> <put type = "Text" name = "Price" /> </ div> <v> <v> <v> type = "file" name = "fileImage.upload" /> </ div> <v> <label> catégorie: </ labe> <input id = "cc" name = "category.id" /> </ div> <v> <v> <label> ajouter à recommander: </ label> recommandé: </ label> recommandé: <intrant type = "radio" name = "Sortie" Checked = "Checked" name = "endend" value = "false" /> </ div> <div> <belle> est-il valide: </babloc> répertorié: <input type = "radio" name = "open" checked = "checked" value = "true" /> supprimé: <input type = "radio" name = "open" value = "false" /> </v> <v> <label> Description simple: </ label> <Textara namea = "Colr" 40 ". Rows = "4"> </ textarea> </ div> <div> <label> Description détaillée: </ label> <textarea name = "xRemark" cols = "40" Rows = "8"> </ textarea> </v> <v> <a id = "soumider" href = "#"> ajout </a> <a id = "réset" href = "#"> réseil </ form> </body> </html>Examinons principalement la partie de la méthode personnalisée dans le code JS ci-dessus, qui définit principalement la vérification des images téléchargées. L'analyse spécifique est la suivante:
Ensuite, vous pouvez utiliser une méthode personnalisée dans la section de vérification d'image:
1.2 La mise en œuvre de l'arrière-plan de l'ajout de produits
@Controller ("ProductAction") @Scope ("Prototype") public Class ProductAction étend BaseAction <Ruddus> {// Omit d'autres codes ... public void Save () lève des images de téléchargement de traitement, le blog suivant analyse spécifiquement le téléchargement de Struts2 File Model.SetDate (new Date ()); // Réglez l'heure actuelle, car la réception ne passe pas le champ d'heure, définissez-le vous-même ici. System.out.println (modèle); // Product Information Storage Productservice.save (modèle); }} 2. Mettez à jour le produit
2.1 Mettre à jour la mise en œuvre de l'interface utilisateur du produit
Tout d'abord, regardez le code de la partie du produit mis à jour dans Query.jsp:
Ensuite, jetons un coup d'œil au contenu de update.jsp:
<% @ Page Language = "Java" Import = "Java.util. *" Pageencoding = "UTF-8"%> <! Doctype Html public "- // w3c // dtd html 4.01 transitional // en"> <html> marge: 5px; } </ style> <script type = "text / javascript"> $ (function () {// objet dataGrid var dg = parent. $ ("iframe [title = 'product management']"). get (0) .contentwindow. $ ("# dg"); // a déménagé charger $ ("# cc"). return the processed data to this side to display, so the background needs to package the data into json format and send it to url:'category_query.action', valueField:'id', textField:'type', //Our drop-down list shows the product's category name panelHeight:'auto', //Adaptive height panelWidth:120, //The drop-down list is a width:120 composed of two components, //To set Deux largeurs en même temps modifiables: FALSE, // La boîte déroulante ne permet pas d'édition // COMBO-HÉRIGNANT HÉRIGNEUR HÉRIMITEMENTS, vous pouvez donc définir la vérification ici requise: TRUE, MissingMessage: 'Veuillez sélectionner la catégorie'}); dg.datagrid ("getSelections"); // Chargez le champ de données correspondant de la ligne que vous accédez dans le formulaire pour écho $ ("# ff"). Form ('charger', {id: lignes [0] .id, nom: lignes [0] .name, prix: lignes [0] .Price, remarque: ligne Open: lignes [0] .Open, 'catégorie.id': lignes [0] .category.id // easyui ne prend pas en charge les opérations de point de compte. // Après avoir écho aux données, définissez la fonction de vérification $ ("input [name = name]"). Validatebox ({required: true, manquingMessage: 'Veuillez saisir le nom de catégorie'}); $ ("Input [name = prix]"). Numberbox ({requis: true, manquingMessage: 'Veuillez entrer le prix du produit', min: 0, précision: 2, // conserver deux décimales préfix: '$'}); $ ("input [name = 'fileimage.upload']"). validatebox ({required: true, manquingMessage: 's'il vous plaît télécharger l'image du produit', // définir la méthode personnalisée validType: "Format ['gif, jpg, jpeg, png']" // Les crochets sont paramètres}); $ ("textArea [name = Remark]"). ValidateBox ({requis: true, manquingMessage: 'Veuillez entrer une description simple du produit'}); $ ("textArea [name = xRemark]"). ValidateBox ({requis: true, manquingMessage: 'Veuillez entrer une description simple du produit'}); $ ("textArea [name = xRemark]"). ValidateBox ({requis: true, manquingMessage: 'Veuillez entrer une description simple du produit'}); // désactiver la vérification $ ("# ff"). Form ("DisableValidation"); // L'événement du bouton d'enregistrement $ ("# btn"). Cliquez sur (fonction () {// activer la vérification $ ("# ff"). Form ("activerValidation"); // si la vérification est réussie, soumettez les données if ($ ("# ff"). 'product_update.action', // lors de la soumission de la demande à la méthode de mise à jour de ProductAction Exécute: Function () {// Ferme, fermez la fenêtre actuelle et rafraîchissez la page. $ ("# win"). }); </ script> </ head> <body> <form id = "ff" Method = "Post" EncType = "multipart / form-data"> <div> <label for = "name"> Nom du produit: </ label> <entrée type = "Text" name = "name" /> </ div> <div> <label for = "Price"> PRODUCT> </ Label> <preny type = "Text" Name = "Prix"> </ Div> </ label> Image: </ label> <entrée type = "file" name = "fileImage.upload" /> </ div> <v> <label for = "Account"> Catégorie de produit: </ laboratoire> <! - Données administratrices de chargement à distance -> <entrée id = "cc" name = "catégorie.id" /> </v> <div> <label pour = "Remarque"> Description simple: </ label> Rows = "4"> </ textarea> </ div> <div> <étiquette pour = "xRemark"> Description détaillée: </ label> <textarea name = "xRemark" Cols = "40" Rows = "8"> </ TextArea> </div> <div> <label pour = "Comrend"> Produits recommandés: </ label> oui: <entrée type = "Radio" Name = "Value" Non: <entrée type = "Radio" name = "endarmed" value = "false" /> </ div> <div> <label for = "open"> Produits efficaces: </ label> listés: <input type = "radio" name = "open" value = "true" /> supprimé: <input type = "radio" name = "open" value = "false" /> </ div> <div> <a id = "bt" hre = "#" "" "" "" data-options = "iConcls: 'icon-edit'"> update </a> <input type = "Hidden" name = "id" /> </div> `</form> </ body> </html> La partie de mise à jour est essentiellement la même que la mise à jour de la catégorie de produit. Je ne le répéterai plus. Ce qui suit est la mise en œuvre de la partie de mise à jour des antécédents:
2.2 Mise à jour de la mise en œuvre des antécédents du produit
@Controller ("ProductAction") @Scope ("Prototype") public Class ProductAction étend BaseAction <Ruddus> {// omettre d'autres codes ... public void Update () lève l'exception {// Traitez les images téléchargées, et le blog suivant analyse spécifiquement le téléchargement de Struts2 File Model.SetDate (New Date ()); // Réglez l'heure actuelle, car la réception ne passe pas le champ d'heure, définissez-le vous-même ici. System.out.println (modèle); // Mettre à jour Product ProductService.update (modèle); }} Par rapport à la mise à jour des catégories de produits, il n'y a qu'une seule opération de téléchargement d'images. Nous devons traiter des images téléchargées en arrière-plan. Nous analyserons en détail la fonction de téléchargement de fichiers de Struts2 dans le prochain article.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.