O Apache Commons contém muitas ferramentas de código aberto para resolver problemas que são frequentemente encontrados na programação e reduzem o trabalho repetitivo. Abaixo está uma breve introdução às ferramentas que usei durante o processo de desenvolvimento nos últimos anos.
| Componentes | Introdução funcional |
| Beanutils | Fornece várias operações, objetos de clonagem, propriedades etc. para Javabeans. |
| Entre | Converta os objetos XML e Java um com o outro. |
| Codec | Ferramentas que lidam com métodos de codificação comumente usados como DES, SHA1, MD5, BASE64, etc. |
| Coleções | Operação da estrutura de coleção Java. |
| Compressa | O Java fornece a biblioteca da classe de compactação de embalagem de arquivos. |
| Configuração | Uma biblioteca de classe de gerenciamento de configuração para aplicativos Java. |
| DBCP | Forneça serviços de pool de conexão de banco de dados. |
| Dbutils | Fornece encapsulamento de operação do JDBC para simplificar a consulta de dados e registrar operações de leitura. |
| Java envia e -mails para encapsulamento do Javamail. | |
| FileUpload | Fornece função de upload de arquivo. |
| HttpClient | Fornece várias operações de comunicação entre clientes e servidores HTTP. Agora foi alterado para httpcomponentes |
| Io | Encapsulamento de ferramentas de IO. |
| Lang | Pacotes de classe de ferramentas para métodos de objetos básicos java, como: stringutils, Arrayutils, etc. |
| Log | Ele fornece uma interface de log Java. |
| Validador | Fornece uma estrutura de verificação de dados para o lado do cliente e do servidor. |
1. Beanutils fornece várias operações para Javabeans, como objeto, cópia de atributos, etc.
// 1. Objeto de clonagem // Crie um novo feijão java normal a ser usado como o objeto clonado Public Class Pessoa {private string name = ""; private string email = ""; private int age; // omita o conjunto, get} // crie uma classe de teste, onde o código no método principal é o seguinte: import java.lann. java.util.map; importar org.apache.commons.beanutils.beanutils; importar org.apache.commons.beanutils.convertutils; public class Test {/** ** * @param PSOYSP */public static maid (string [] args) {pessoa de pessoa = pessoa; {// clone pessoa pessoa2 = (pessoa) beanutils.cloneBean (pessoa); system.out.println (Person2.getName ()+">>"+Person2.getage ());} Catch (instantionExceptException e) {E.PrintStack ();} Catch (InstantionExcepthException e) {e.Printack (e.PrintSIntrack (). {E.PrintStackTrace ();} Catch (noschmethodException e) {e.printStacktrace ();}}} // O princípio também é feito através do mecanismo de reflexão Java. // 2. Converta um objeto de mapa em um feijão // A chave deste objeto de mapa deve corresponder às propriedades do feijão. Mapa mapa = new hashmap (); map.put ("nome", "tom"); map.put ("email", "tom@"); map.put ("idade", "21"); // converte mapa em uma pessoa de objeto de pessoa que atribuiu a pessoa nova (); beanutils.populate (a pessoa, o mapa);/// através da linha acima do código, o code já. // Converta um feijão em um objeto de mapa, como segue: mapa mapa = beanutils.describe (pessoa)2. Os objetos Betwixt XML e Java são convertidos.
// 1. Converta Javabean em XML Content // Crie uma nova classe de classe Public Class Pessoa {Nome da String Private; private Int Age;/** Precisa permitir que o feijão seja criado via reflexão*/public PERSONBEAN () {} Public PersonBean (Nome da String, Int Age) {this.name = Name; Nome = Age; Age;} // omit Set, Método, Public To Public t) "', idade ='" + idade + "']";}} // Crie uma classe WritEApp: importar java.io.stringwriter; importar org.apache.commons.betwixt.io.beanwriter; public class writeapp {/*** Crie um exemplo e convertem em xml. */public static final void main (string [] args) lança Exceção {// Crie um stringwriter primeiro, nós o escreveremos como um string stringwriter outputWriter = new StringWriter (); // betwixt aqui, apenas grava o bean como um fragmento //, se desejarmos concluir o XML, devemos escrever para o manutenção do cabeçalho. coding = 'utf-8'?>/n "); // Crie um weanwriter, que será gravado no fluxo que preparamos. BeanWriter Beanwriter = new BeanWriter (outputWriter); // Configure entre mais detalhes, consulte Java Docs ou o documento mais recente beanwriter.getxmlinTrospector (). getConfiguration (). setAttributesForPrimitives (false); beanwriter.getBindingConfiguration (). Setmapids (false); setwern somewrtttyprint (); se este lugar não passa o nome de raiz do xm de xm, o nome da raiz, o nome da raiz, o nome do bets, o nome do bets, o que é o nome do bets e o nome do bets e o nome do bets e o nome do betwern; the root node beanWriter.write("person", new PersonBean("John Smith", 21));//Output result System.out.println(outputWriter.toString());// Betwixt writes fragments rather than a document, so don't automatically close writers or streams, // But here is just an example and won't do more, so you can turn off outputWriter.close();}}//2. Converta XML em Javabean importar java.io.stringReader; importar org.apache.commons.betwixt.io.beanReader; public class ReadApp {public static Final Void Main (string args []) lança Exceção {// Crie um XML First. Since this is only an example, we hardcoded a piece of XML content StringReader xmlReader = new StringReader( "<?xml version='1.0' encoding='UTF-8' ?> <person><age>25</age><name>James Smith</name></person>");//Create BeanReader BeanReader beanReader = new BeanReader();//Configure reader BeanReader.getxmlinTrospector (). getConfiguration (). SetAttributesForPrimitives (false); beanReader.getBindingConfiguration (). Setmapids (falseLeScl); XML PersonBean Pessoa = (PersonBean) BeanReader.Parse (XMLReader); // Resultado de saída System.out.println (Person);}}3. O codec fornece algumas implementações públicas de codec, como base64, hexadecimal, md5, fonético e URLs, etc.
// base64 codec private static string codEtest (string str) {base64 base64 = new base64 (); try {str = base64.EncodeToString (str.getBytes ("utf-8");} catch (unsupportEdEncingException e) {e.prArcackTrace (); "+str); retornar str;} private estático vazio decodteste (string str) {base64 base64 = new base64 (); // str = arrays.toString (base64.DecodeBase64 (str)); str = new String (base64.DecodeBase64 (str)); System.out.println ("base64 decodificado:"+str);}4. As coleções estendem Java.Util e processa dados bastante flexíveis.
Org.apache.commons.Collections Commons Coleções Conjunto personalizado de interfaces e classes de ferramentas comuns
org.apache.commons.collections.bag Um conjunto de classes que implementam a interface da bolsa
org.apache.commons.collection.bidimap Um conjunto de classes que implementam interfaces da série BidiMap
org.apache.commons.collections.buffer Um conjunto de classes que implementam a interface buffer
org.apache.commons.collection.Collection Um conjunto de classes que implementam a interface java.util.Collection
org.apache.commons.collections.comparators Um conjunto de classes que implementam a interface java.util.comparator
org.apache.commons.collections.functores Commons Coleções Conjunto personalizado de classes funcionais
org.apache.commons.collections.iterators Um conjunto de classes que implementam a interface java.util.iterator
org.apache.commons.collections.keyvalue implementa um conjunto de classes relacionadas ao mapeamento de coleta e chave/valor
org.apache.commons.collections.list Um conjunto de classes que implementam a interface java.util.list
org.apache.commons.collections.map Um conjunto de classes que implementam interfaces de série de mapas
org.apache.commons.collections.set Um conjunto de classes que implementam interfaces de série de conjuntos de conjuntos
/** * Obtenha uma certa chave após a chave armazenada no conjunto */orderedmap map = new LinkedMap (); map.put ("cinco", "5"); map.put ("six", "6"); map.put ("sete.nExtkey" ");" Five.firstKey ()/// returns "" Five "Map.Next.NextKey" ");" FiveStkey "; Retorna "Seven"/** * Obtenha valor através da chave * Obtenha a chave do valor * Chave e o valor da chave no mapa */bidiMap bidi = new TreebidiMap (); bidi.put ("seis", "6"); bidi.get ("seis"); // retorna "6" bidi.getKey ("6"); // Remove o mapeamento de bidiMap inverso = bidi.inversebidiMap (); // retorna um mapa com chaves e valores trocados system.out.println (inverso);/*** Obtenha o mesmo elemento nos dois conjuntos*/list <string> list1 = novo ArrayList <String> (); list1.add ("1"); list1.add ("2"); list1.add ("3"); list <string> list2 = new ArrayList <string> (); list2.add ("2"); list2.add ("3"); list2.ad2 ("5"); list2); system.out.println (c);5. Bibliotecas de classes compactadas e compactadas compressas compressas.
// Crie um objeto compactado ZiparchiveEntry Entry = new ZiparchiveEntry ("compresstest"); // o arquivo a ser comprimido f = new File ("e: //test.pdf"); FileInputStream fis = newInputStream (f); // o arquivo comprimido pelo objeto de saída ZiParchivetive = File ("e: //test.zip")); zipOutput.putarchiveEntry (entrada); int i = 0, j; while ((j = fis.read ())!6. A configuração é usada para ajudar a processar arquivos de configuração e suporta muitos métodos de armazenamento.
1. Arquivos de propriedades
2. Documentos XML
3. Arquivos da lista de propriedades (.plist)
4. Jndi
5. JDBC DataSource
6. Propriedades do sistema
7. Parâmetros de applet
8. Parâmetros de servlet
// dê um exemplo simples de propriedades #userRergui.properties colors.background = #fffff colors.foreground = #000080 window.width = 500 window.height = 300 PropertiesConfiguration config = newropertiesConfiguration ("UserGui.Properties"); config.setProperty ("LESESSCONFIGRATION (" UserGui.Properties "); config.save ("usergui.backup.properties); // salve um número inteiro de cópia = config.getInteger (" window.width ");7. O DBCP (Pool de conexão com o banco de dados) é um pool de conexão de banco de dados que se baseia no mecanismo de pool de objetos Jacarta Commons-Pool. A fonte de dados do Tomcat usa o DBCP.
importar javax.sql.dataSource; importar java.sql.connection; importar java.sql.statement; importar java.sql.resultset; import java.sql.sqlexception; import orgache.commons.pool.jectOol; importação; org.apache.commons.dbcp.connectionFactory; importar org.apache.commons.dbcp.poolingdataSource; importar org.apache.commons.dbcp.atableConnectionFactory; import org.apache.commons.dbcpping.DriverManGonConConlection; main (string [] args) {System.out.println ("Carregar JDBC Driver"); Try {Class.Forname ("Oracle.jdbc.driver.oracledriver");} Catch (ClassNotFoundException e) {E.PrintStack ();} System.out.PrintlnnnnnnnnnnnnnnnnN ("MONENTE). fonte "); DataSource DataSource = SetUpDataSource (" JDBC: Oracle: Thin: @localhost: 1521: teste "); System.out.println (" done "); // conexão Connecn = null; Stmt = null; ResultSet Rset = Null; Tryn; DataSource.getConnection (); System.out.println ("Criar instrução."); stmt = Conn.CreateStatement (); System.out.println ("Execução da declaração"); rset = stmt.executeQuery ("selecione * de pessoa"); rset.getMetadata (). getColumnCount (); while (rset.Next ()) {for (int i = 0; i <= numCols; i ++) {System.out.print ("/t"+rset.getString (i);} System.Println (""); finalmente {tente {if (rset! = null) rset.close ();} catch (exceção e) {} tente {if (stmt! = null) stmt.close ();} catch (exceção e) {} tente {if (conn = null). Connecturi) {// Defina o endereço de conexão Connection ConnectionFactory = new DriverManageRerConnectionFactory (Connecturi, NULL); // Crie a conexão PoolableConnecnionConnection Factory PoolabonConnectionFactory = new PoolableConnectionFactory (ConnectionFactory); PoolingDataSource DataSource = new PoolingDataSource (ConnectionPool); retornar DataSource;}}8. Uma biblioteca de classe de ferramentas JDBC de recursos fornecida pela Organização Dbutilsapache. É um encapsulamento simples do JDBC, encapsulamento secundário das classes de banco de dados operacionais tradicionais e pode converter o conjunto de resultados em uma lista. , e isso não afeta o desempenho do programa.
DBUTILS Classe: Startup Class
Interface Resultados e Tipo de Conversão
Classe MapglistHandler: Classe de implementação, converta registros em lista
Classe Beanlisthandler: implementa a classe, converte registros em lista e transforma registros no objeto Javabean Type
Qreryrunner Classe: Classe que executa instruções SQL
importar org.apache.commons.dbutils.dbutils; importar org.apache.commons.dbutils.queryrunner; importar org.apache.commons.dbutils.handlers.beanlisthandler; importação java.sql.connection; import.sport.sqlandler; importação; java.util.list; // converte para listar a classe pública beanlists {public static void main (string [] args) {conexão conn = null; string url = "jdbc: mysql: // localhost: 3306/ptest"; string jdbcdriver = "com.mysql.jdbs "ptest"; dbutils.loadDriver (jdbcdriver); try {conn = driverManager.getConnection (url, usuário, senha); queryrunner qr = new Queryrunner (); list Results = (list) qr.Query (conn, "Select Id, de pessoa", New.sThandler (List) (list) (list) (list) (list); i ++) {pessoa p = (pessoa) resulta.get (i); system.out.println ("id:" + p.getId () + ", nome:" + p.getName ());}} catch (sqLexception e) {e.printStacktrace ();}} {dbutils.closely) {Conn); name;//Omit set, get method}import org.apache.commons.dbutils.DbUtils;import org.apache.commons.dbutils.QueryRunner;import org.apache.commons.dbutils.handlers.MapListHandler;import java.sql.Connection;import java.sql.DriverManager;import java.sql.sqLexception; importar java.util.list; importar java.util.map; // converter para mapear a classe pública mapLists {public static void main (string [] args) {conexão conn = null; string url = "jdbc: mysql: // localhost: 3306 "com.mysql.jdbc.driver"; string user = "root"; string senha = "ptest"; dbutils.loadDriver (jdbcdriver); tente {conn = driverManager.getConnection (url, usuário, senha); queryrunner qr =weryery (listernner (); Maplisthandler ()); para (int i = 0; i <resultados.size (); i ++) {map map = (map) resultados.get (i); system.out.println ("id:" + map.get ("id") + ", nome:" + map.get ("name"); {Dbutils.closequietly (conn);}}}9. Uma API de código aberto fornecido por email é um encapsulamento do Javamail.
//Send emails using commons email public static void main(String args[]){Email email = new SimpleEmail();email.setHostName("smtp.googlemail.com");email.setSmtpPort(465);email.setAuthenticator(new DefaultAuthenticator("username", "Senha")); email.SetSsloNConnect (true); email.setFrom ("[email protected]"); email.setsubject ("testmail"); email.setmsg ("Este é um e-mail de teste ... :-)"); Email.addto ("[email protected]"); e-mail.send ();10. Função de arquivo de arquivo da Web Java FileUpload.
// Exemplo oficial: //* Verifique se temos uma solicitação de upload de arquivos boolean ismultipart = servletfileupload.ismultipartContent (request); // Agora temos uma lista de itens // Se o seu aplicativo estiver próximo do caso mais simples, o processamento acima é suficiente. Mas às vezes ainda precisamos de mais controle. // Os seguintes são várias opções de controle: // Crie uma fábrica para itens de arquivo baseados em disco DiskFileItemFactory Factory = new DiskFileItemFactory (); // Definir restrições de fábrica Factory.SetSizETHreshold (YourMaxmorySize); Factory.SetRePository (seu servEluTory); // Crie um novo arquivo de arquivo. ServletfileUpload (fábrica); // Defina o tamanho máximo de upload upload.SetSizEMAX (YourMaxRequestSize); // analisar todas as solicitações list/ * fileItem */itens = upload.ParSereQuest (request); // Crie um fábrica para o arquivo baseado em disco com base em disco disco (fábrica yourtempdirectory); // Depois que a análise for concluída, você precisa processar ainda mais a lista de itens. // processa os itens carregados iterator iter = items.iterator (); while (iter.hasnext ()) {fileItem item = (fileItem) iter.Next (); if (item.isformfield ()) {processformfield (item);} else {processuploadedfile (item);}} // distingue se os dados são dados de formulário simples, se é simples dados: // processField se (item.isformfield ()) {string name = item.getFieldName (); string =..Tem..Tem.Ten.Ter.Temfield ()) {string name = item.getFieldName (); string =.. // processuploadedfile if (! item.isformfield ()) {string fieldName = item.getfieldName (); string filename = item.getName (); string contentType = item.getContentType (); itemsinMemory/itemsinmyory/sizein; Escreva -os em um arquivo ou converta -os em um fluxo // Processe um upload de arquivo se (writEtofile) {file uploadedFile = new File (...); item.write (uploadfile);} else {inputStream uploadteream = item.getInputream (); // ... etapas omitidas no upload.close (); Processe um upload de arquivo no memória byte [] data = item.get (); // ... etapas omitidas // Se esse arquivo for realmente grande, convém relatar ao usuário o quanto ele foi transmitido ao servidor, para que o usuário possa entender o processo de upload // criar uma atualização do Longer PTTENSlistener PTTENSListener = New ProgressListener () {Atualmente, a atualização do Public) {System.out.println ("Atualmente, estamos lendo item" + pitems); if (pcOntentLength == -1) {System.out.println ("até agora" + pbytesread + "bytes foram lidos. leia. ");}}}; upload.setProgressListener (ProgressListener);11. O HTTPCLIEN é um cliente HTTP compatível com HTTP/1.1 implementado com base no HTTPCORE. Ele fornece uma série de módulos de autenticação de cliente reutilizável, manutenção de status HTTP e gerenciamento de conexão HTTP.
// Get Método Importar java.io.ioException; importar org.apache.commons.httpclient. Construct an instance of HttpClient HttpClient httpClient = new HttpClient();// Create an instance of GET method GetMethod getMethod = new GetMethod("http://www.ibm.com");// Use the default recovery policy provided by the system to getMethod.getParams (). setParameter (httpmethodparams.retry_handler, new DefaultTtpMethodRetRyHandler ()); tente {// execute getMethod int statusCode = httpclient.executemethod (getMethod); if (statusCode! = httpstatus.sc_ok) {System.err.println ("Método falhou:" + getMethod.getStatusline ());} // Leia o conteúdo byte [] Responsbody = getMethod.GetResponseBody (); // Handle System.out.Println (novo string); Ocorreu, o que pode ser que o protocolo esteja incorreto ou o conteúdo retornado é problemático System.out.println ("Verifique o endereço HTTP fornecido!"); E.PrintStackTrace ();} Catch (IoException e) {// uma exceção de rede ocorreu. getMethod.ReleasEConnection ();}}}} // Publique o método import java.io.ioexception; importar org.apache.commons.httpclient. classe Postample {public static void main (string [] args) {// Construa uma instância de httpclient httpclient httpclient = new httpclient (); // crie uma instância do método post string url = http:/wwww.oracle.ood.; NameValuepair [] data = {new nameValuepair ("id", "youUsername"), new nameValuepair ("passwd", "yourpwd")}; // coloque o valor do formulário postmethod Postmethod.setRequestbody (data); // Execute PostMethod status status HttpClient cannot automatically handle forwarding for requests that require subsequent services such as POST and PUT // 301 or 302 if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY || statusCode == HttpStatus.SC_MOVED_TEMPORARILY) {// Take out the address of the steering from the beginning Header locationHeader = postmethod.getResponseHeader ("localização"); string location = null; if (locationheader! = null) {location = locationheader.getValue (); system.out.println ("A página foi redirecionada para:" + localização);} else {System.err.println ("o valor do campo de localização é Null.");12. O IO é muito conveniente para o Java.io estender o arquivo de operação.
// 1. Leia o fluxo // Código padrão: inputStream in = new Url ("http://jakarta.apache.org") .openstream (); try {inputStreamReader inr = newsTreamreamReader (in); BufferErader buf = newredEredReader (INR); string line; while (line); );}} finalmente {in.close ();} // use ioutils inputStream in = new url ("http://jakarta.apache.org") .openstream ();} {System.out.println (ioutils.tostring (in)); Leia o arquivo de arquivo Arquivo = novo arquivo ("/Commons/io/Project.properties"); linhas linhas = fileUtils.readLines (FILE, "UTF-8"); // 3. Veja o espaço restante Freespace longo = FileSystemutils.freespace ("c:/");13. Lang é principalmente uma coleção de ferramentas públicas, como operações em caracteres, matrizes, etc.
// 1 Mesclar duas matrizes: org.apache.commons.lang. Arrayutils // Às vezes, precisamos combinar duas matrizes em uma matriz, e é muito conveniente usar Arrayutils. O exemplo é o seguinte: private estático void testarr () {string [] s1 = new String [] {"1", "2", "3"}; string [] s2 = new String [] {"a", "b", "c"}; string [] s = (string []) Arrayutils.addall (s1, s2); {System.out.println (s [i]);} string str = Arrayutils.ToString (s); str = str.substring (1, str.Length () - 1); System.out.println (str + ">>" + str.Length ());} // 2 interceptUtilTils.s "Str. se a string é composta de números (0 ~ 9). Nesse caso, retorne verdadeiro, mas esse método não reconhece pontos decimais e observe que stringutils.isnumeric ("454534"); // retorna true // 4. Obtenha o nome da classe System.out.println (classutils.getshortclassName (test.class)); // Obtenha o nome do pacote System.out.println (classutils.getpackagename (test.class)); //5.Numberutils System.out.println (numberUtils.stringToint ("6")); // 6. Letras aleatórias de cinco dígitos e system.out.println (aleatomstringutils.randomalphanumeric (5)); //7.stringescapeutils System.out.println (stringescapeutils.escapehtml ("<html>")); // O resultado da saída é <html> System.out.println (Stringescapetils.escapejava (String "); ")); // separa o conteúdo da matriz por System.out.println (stringutils.join (teste,", ")); // Adicione caracteres à direita para fazer o comprimento total de 6 system.out.println (stringils.rightpad (" abc ", 6, 't'); // a primeira letra é capitalizada System.out.println (stringutils.capitalize ("abc")); // exclui todos os espaços de branco de uma string excluindo todos os espaços system.out.println (stringutils.deletewhitespace ("abc")); // delete todos os whitapspaces de uma stractlete all spaces.out.out.ptintl); "ba")); // denota os dois caracteres no sistema esquerdo.out.println (stringutils.left ("abc", 2)); system.out.println (numberils.stringtoint ("33");14. O registro fornece uma interface de log Java, que leva em consideração tanto leve e não depende de ferramentas específicas de implementação de log.
importar org.apache.commons.logging.log; importar org.apache.commons.logging.logfactory; public class Commonlogtest {private static log = logFactory.getLog (CommonLogTest.class); // Log Print public static Maid Main (string [] args) {log.error ("error"); log.debug ("debug"); log.warn ("warn"); log.info ("info"); log.trace ("trace"); system.out.println (log.getclass ();}}}}}} 15. O validador é um sistema de verificação geral, que fornece uma estrutura de verificação de dados para o lado do cliente e do servidor.
Data de verificação
// Obtenha a verificação da data dateValidator validator = dateValidator.getInstance (); // Verifique/converta data alimentar = validator.validate (foostring, "dd/mm/yyyy"); if (alimentar == null) {// o erro não é um retorno de data;}Verificação da expressão
// Defina o parâmetro boolean caseseSitive = false; string regex1 = "^([az]*) (?: //-) ([az]*)*$" string regex2 = "^([az]*) $"; string [] regexs = new String [] {regex1, regex1 (string // Criar um válido A Vidiator = String [] {regex1, regex1; caseseSensitive); // Verifique se retorna boolean boolean valid = validator.isValid ("abc-Def"); // Verifique se retorna o resultado da String String = validator.validate ("abc-Def"); // verifique retorna a matriz string [] grupos = validator.match ("abc-def");Use a verificação em arquivos de configuração
<form-validação> <lobal> <validator name = "requerir" className = "org.apache.commons.validator.testValidator" method = "validaterequired" methodparams = "java.lang.Object, org.apache.commons.validator.field. <form-validation> <global> <validator name="required" classname="org.apache.commons.validator.TestValidator" method="validateRequired" methodParams="java.lang.Object, org.apache.commons.validator.Field"/> </global> <formset> <form name="nameForm"> <field property="firstName" depended = "requerir"> <arg0 key = "nameform.firstname.displayname"/> </field> <field propriedade = "sounName" dependes = "requerir"> <arg0 key = "nameform.lastname.displayname"/> </formset> </form-validação>
Classe de verificação
Se destaca de org.apache.commons.validator.requirednametest // carrega o arquivo de configuração de verificação inputStream em = this.getclass (). GetResourceasStream ("validator-name-required.xml"); validorResources Recursos = novo validatorReResources (em // em // isto é a válida. I omitted Name name = new Name();Validator validator = new Validator(resources, "nameForm");//Set the parameter validator.setParameter(Validator.BEAN_PARAM, name);Map results = null;//Verify results = validator.validate();if (results.get("firstName") == null) {//Verify successfully} else {//There is an error int errors = ((Inteiro) Results.get ("FirstName"))). Intvalue ();}Resumir
O exposto acima é toda a explicação detalhada do código do conjunto de ferramentas do Apache Commons neste artigo, espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!