O princípio de adicionar uma parte do produto é o mesmo que adicionar uma categoria de produto. Consulte o artigo: Adicionando e atualizando uma categoria de produto , mas é mais complicado do que uma categoria de produto. Como existem muitos atributos do produto, existem mais campos no banco de dados correspondente. Há também uma opção para adicionar um produto para fazer upload de fotos. Essa pequena parte do conteúdo será explicada separadamente no próximo artigo, porque isso envolve um ponto de conhecimento, que é que o Struts2 implementa a função de upload de arquivos. Eu não vou dizer muito mais. Agora vou começar a melhorar o código para adicionar a parte do produto:
1. Adicione produtos
1.1 Adicionando implementação da interface do usuário para produtos <r /> Primeiro, preencha o código para adicionar parte do produto em query.jsp:
Em seguida, vejamos a implementação específica em Save.jsp:
<%@ página linguagem = "java" import = "java.util. margem: 10px; } </style> <script type = "text/javascript"> $ (function () {// método de verificação personalizado registra a nova função $ .extend ($. Formato: {// A implementação da função, se retorna falsa, a verificação falha no validador: function (value, param) {// Obtenha o nome do sufixo do arquivo atual var Ext = value.substring (value.lastIndexOf ('') + 1); Arr.Length; no formato json e envie-o para o URL: 'category_query.action', valuefield: 'id', textfield: 'type', // a lista suspensa mostra todas as categorias de produtos PainelSelHeight: 'Auto', // Adaptive Height Panelwidth: 120; // ComboBox herda o combo herda ValidateBox para que você possa definir a verificação diretamente aqui necessária: true, MissingMessage: 'Selecione a categoria'}); $ ("input [nome = nome]"). $ ("input [nome = preço]"). NumberBox ({requerido: true, MissingMessage: 'Por favor, insira o preço do produto', min: 0, precisão: 2, // retém dois lugares decimais prefixos: '$'}); $ ("input [nome = 'fileImage.upload']").). $ ("textarea [nome = observação]"). $ ("textarea [nome = xremark]"). $ ("textarea [nome = xremark]"). // desativar a verificação $ ("#ff"). Form ("desabilablevalidação"); // Registrar o evento do botão $ ("#submeter"). Clique em (function () {// Ative a verificação $ ("#ff"). Form ("enableValidation"); // Se a verificação for bem -sucedida, envie os dados if ($ ("#ff"). Form ("validate")) {// chamando o método de envio para submar 'Product_save.action', Sucesso: function () {// Se bem -sucedido, feche a janela atual. $ ("#win"). Window ("Close"); // eventos $ ("#reset"). Clique em (function () {$ ("#ff"). Form ("desabilleValidation"); // A redefinição não requer verificação de formulário // redefinir os dados do formulário atual $ ("#ff"). Form ("reset");}); }); </script> </head> <body> <form id="ff" method="post" enctype="multipart/form-data"> <div> <label>Product name:</label> <input type="text" name="name" /> </div> <div> <label>Product price:</label> <input type="text" name="price" /> </div> <div> <label>Image upload:</label> <input type = "file" name = "fileImage.upload"/> </div> <div> <belt> categoria: </label> <input id = "cc" name = "category.id"/> </div> <div> <bret> adicione para recomendar: </bel> recomendado: </etiquet> recomendado: <input> "Radio> Radio" Radio> "Nome =" Names = "Recomendado =" Recomendado "" <input type = "radio" name = "elogio" value = "false"/> </div> <div> <breting> é válido: </etiqueta> listado: <input type = "radio" name = "aberto" checked = "checked" value = "true"/> removido: <input type = "radio" name = "open" "/" false "/>"/> "/> cols="40" rows="4"></textarea> </div> <div> <label>Detailed description:</label> <textarea name="xremark" cols="40" rows="8"></textarea> </div> <div> <a id="submit" href="#">Add</a> <a id="reset" href="#">Reset</a> </div> </mand> </body> </html>Vamos olhar principalmente para a parte do método personalizado no código JS acima, que define principalmente a verificação de imagens carregadas. A análise específica é a seguinte:
Em seguida, você pode usar um método personalizado na seção de verificação de imagem:
1.2 A implementação em segundo plano da adição de produtos
@Controller ("Production") @Scope ("Prototype") Public Class ProductAction estende o Baseaction <Product> {// omitis outros códigos ... public void save () lança exceção {// Processando as imagens enviadas, o próximo blog analisa especificamente o upload de struts2 file model.setDate (New);); // Defina a hora atual, porque a recepção não passa o campo de tempo, defina -o aqui. System.out.println (modelo); // Informações sobre o produto Storage Storage ProductsVice.Save (Modelo); }} 2. Atualize o produto
2.1 Atualize a implementação da interface do usuário do produto
Primeiro, observe o código da parte do produto atualizado em query.jsp:
Em seguida, vamos dar uma olhada no conteúdo do update.jsp:
<%@ página linguagem = "java" import = "java.util. margem: 5px; } </style> <script type = "text/javascript"> $ (function () {// datagrid objeto var dg = pai. $ ("iframe [title = 'gestão do produto']"). get (0) .ContentWindow. Precisa retornar os dados processados para este lado para exibir, para que o plano de fundo precise empacotar os dados no formato JSON e enviá-los para o URL: 'category_query.action', valuefield: 'id', textfield: 'type', // lista de suspensão do produto, //: //: // lipert lipert lipert lipert of 120, // sets-in the grow-in the liberl, ////0wdring de 120, / / ///010, //: // lipert lipert withen wowlswent: 120, // //, //, a listão de altura //. Larguas ao mesmo tempo editáveis: Falso, // a caixa suspensa não permite a edição // combo combo combo, para que você possa definir a verificação diretamente aqui necessária: True, MissingMessage: 'Selecione a categoria'}); dg.datagrid ("getSelections"); // Carregue o campo de dados correspondente da linha que você entra no formulário para echo $ ("#ff"). Form ('load', {id: linhas [0] .id, nome: linhas [0] .Name, preço: linhas [0] .Price, OBSERVAR: linhas [0] .Remark, XREMARK: ROWS [0]. aberto: linhas [0] .open, 'category.id': linhas [0] .category.id // easyui não suporta operações de ponto. // Depois de ecoar os dados, defina a função de verificação $ ("input [nome = nome]"). $ ("input [nome = preço]"). NumberBox ({requerido: true, MissingMessage: 'Por favor, insira o preço do produto', min: 0, precisão: 2, // retém dois lugares decimais prefixos: '$'}); $ ("input [nome = 'fileImage.upload']").). $ ("textarea [nome = observação]"). $ ("textarea [nome = xremark]"). $ ("textarea [nome = xremark]"). // desativar a verificação $ ("#ff"). Form ("desabilablevalidação"); // Evento do botão Registrar $ ("#BTN"). Clique em (function () {// Ative a verificação $ ("#ff"). Form ("enableValidation"); // se a verificação for bem -sucedida, envie os dados if ($ ("#ff"). Form ("validate")) {// chamando o método submare para enviar dados para enviar $ (#ff "). 'Product_Update.action', // Ao enviar a solicitação para o método de atualização do produto, executa o sucesso: function () {// Se bem -sucedido, feche a janela atual e atualize o pai. }); </script> </head> <body> <formig id = "ff" method = "post" Enctype = "Multipart/form-data"> <div> <gravador para = "name"> nome do produto: </label> <input type = "text" name = "name"/> </bel> <div> <belgy "/" preço "preço =" text "</" name = "name"/> </<div> <bel> <bel>/"preço" "preço"> <Beel> Atualizar imagem: </cret> <input type = "file" name = "fileImage.upload"/> </div> <div> <gravador para = "conta"> categoria do produto: </cret> <!-Remote Carreging Administrator Data-> <input id = "cc" name "category.id> COLS = "40" linhas = "4"> </sexttarea> </div> <div> <gravador para = "xremark"> Descrição detalhada: </elabel> <textarea name = "xremark" cols = "40" linhas "robina" 8 "> </sexttarea> </div <div> <div =" 4 40 "ROOWs =" 8 " value="true" /> No:<input type="radio" name="commend" value="false" /> </div> <div> <label for="open">Effective products:</label> Listed:<input type="radio" name="open" value="true" /> Removed:<input type="radio" name="open" value="false" /> </div> <div> <a id="btn" href = "#" data-options = "icoNCls: 'icon-edit'"> update </a> <input type = "hidden" name = "id"/> </div> `</morm> </body> </html> A parte da atualização é basicamente a mesma que a atualização da categoria de produto. Não vou repetir novamente. A seguir, é apresentada a implementação da parte de atualização em segundo plano:
2.2 Implementação de fundo atualizada do produto
@Controller ("Production") @Scope ("prototype") classe pública ProductAction estende o Baseaction <Product> {// omitis outros códigos ... public void update () lança exceção {// Processar as imagens enviadas e o próximo blog analisa especificamente o upload de struts2 file model.setDate (New); // Defina a hora atual, porque a recepção não passa o campo de tempo, defina -o aqui. System.out.println (modelo); // Atualize o produto ProductService.Update (Model); }} Comparado com a atualização das categorias de produtos, há apenas mais uma operação de upload de imagens. Precisamos processar imagens carregadas em segundo plano. Analisaremos a função de upload de arquivos do STRUTS2 em detalhes no próximo artigo.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.