Recent Notes

Displaying keyword search results 1 - 10
Created by Fang on April 16, 2012 12:58:35    Last update: April 16, 2012 12:58:35
To implement a JSP custom tag with dynamic attributes (for example, to pass-thru arbitrary attributes not handled by the JSP tag): Set the dynamic-attributes element to true in the TLD: <tag> <name>mark</name> <tag-class>c... The tag handler must implement javax.servlet.jsp.tagext.DynamicAttributes : package com.example.jsp; import java.io.*; ...
Created by Fang on March 30, 2012 10:07:25    Last update: March 30, 2012 10:09:08
After a user resets a password, I want to force the user to change the password before she gets access to secured content. This is usually done with a servlet filter. But with Spring MVC, you can also use a HandlerInterceptor . According to Spring JavaDoc: HandlerInterceptor is basically similar to a Servlet 2.3 Filter, but in contrast to the latter it just allows custom pre-processing with the option of prohibiting the execution of the handler itself, and custom post-processing. Filters are more powerful, for example they allow for exchanging the request and response objects that are handed down the chain. Note that a filter gets configured in web.xml, a HandlerInterceptor in the application context. As a basic guideline, fine-grained handler-related preprocessing tasks are candidates...
Created by Fang on March 06, 2012 12:25:33    Last update: March 06, 2012 12:25:33
In the bean validation API javadoc, for every constraint annotation, there's a corresponding .List annotation. For example, for @NotNull , there's @NotNull.List , for which JavaDoc says: Defines several @NotNull annotations on the same element What would you accomplish with multiple @NotNull annotations that you cannot accomplish with one @NotNull ? This is a test to reveal some of the facts. Change the Person class to: package com.example; public class Person { ... Add another JUnit test ( src/test/com/example/TestPersonWithList.java ): package com.example; import java.util.Itera... As the test shows, a Person bean can never be valid because we are requiring that name must begin with Mr and Ms . One might think that the same can be accomplished by simply repeating the @Pattern annotation multiple times,...
Created by Fang on March 06, 2012 12:24:53    Last update: March 06, 2012 12:24:53
Validation groups can be used to control which rules validation rules to run. A validation group can be identified by any Java interface (not class!). Multiple validation groups may be specified when validating. In this example, I added a validation group named MyValidationGroup ( src/main/java/com/example/MyValidationGroup.java in Maven project): package com.example; public interface MyVal... and added a @Size rule for a person's name, because my database can only store up to 15 characters for a person's name: package com.example; import javax.validatio... Now validate Person with a JUnit test ( src/test/java/com/example/TestPersonWithGroup.java in Maven project): package com.example; import java.util.Set; ... Test with " mvn clean test ". The rules where groups is not specified, which belong to the javax.validation.groups.Default group, are not executed with these tests.
Created by Fang on March 06, 2012 12:22:48    Last update: March 06, 2012 12:22:48
When a bean class inherits another class, the validation rules of the parent class is automatically executed when a child class bean is validated. As an example, I create a class named AccountPerson , which inherits the Person class with the addition of an email field ( src/main/java/com/example/AccountPerson.java in Maven project): package com.example; import javax.validatio... Now validate AccountPerson with a JUnit test ( src/test/java/com/example/AccountPersonTest.java in Maven project): package com.example; import java.util.Set; ... Test with " mvn clean test " and you'll see that the validation rules of the Person class are executed when an AccountPerson bean is validated.
Created by Fang on March 05, 2012 20:32:37    Last update: March 05, 2012 20:32:37
In this simple example, I create a simple validating bean and create a JUnit test to test the validation. The bean ( src/main/java/com/example/Person.java ): package com.example; import javax.validatio... The test ( src/test/java/com/example/TestPerson.java ): package com.example; import java.util.Set; ... Run the test: mvn clean test You'll notice that one test passed and the other failed. The tests require that a person must have a name and the name cannot be empty, so @NotNull is not the right rule to use here. To make sure that the name is not empty, we need to use @Pattern . But since a null String matches any pattern, @NotNull is also needed: package com.example; import javax.validatio...
Created by Fang on February 27, 2012 12:19:19    Last update: February 27, 2012 12:19:19
Mapping Java objects to Jackson JSON is pretty simple. But if you name a JSON field wrong, you'll get the "Unrecognized field ... (Class ...), not marked as ignorable" error. The rule for mapping a Java bean attribute name to a JSON field name is: lower all leading capital letters until the first lower case letter . For example, this Java class: package com.example; public class Person { ... maps to this JSON string: { "firstName": "Jane", "lastName": "... Test code: package com.example; import java.net.URL; ...
Created by Fang on February 16, 2012 12:27:55    Last update: February 16, 2012 12:34:58
Here are some ways to run a main method using Maven: Use the exec plugin: mvn exec:java -Dexec.mainClass="com.example.App" or, with arguments: mvn exec:java -Dexec.mainClass="com.example.App" -... Attach it to a build phase with the build element: <build> <plugins> <plugin> ... If you want to run main from Maven, it's probably just some test code. You are better off just to write a test case, or call the main method from a test class: package com.example; import junit.framework...
Created by Dr. Xi on February 01, 2012 12:55:28    Last update: February 01, 2012 12:55:28
You can define environment variables in the Tomcat context.xml file like this: <?xml version="1.0" encoding="UTF-8"?> <Context... which is equivalent to the following in web.xml : <env-entry> <env-entry-name>varName</env-entr... In Java code, the variable can be looked up like this: // import javax.naming.Context; // import javax...
Created by Fang on January 28, 2012 13:24:09    Last update: January 28, 2012 13:31:22
This is a simple JSP custom tags library with tag body. Just like the JSF counterpart , it splits a string and repeats the body for each word, i.e., with this markup: <%@ taglib uri="http://custom.tag.com/demo" prefix... output: <html> <body> <p>Hello Tigger!</p> <p>H... With Maven, this is the directory structure: ./src ./src/main ./src/main/resources ./s... There are three files to write: pom.xml : <project xmlns="http://maven.apache.org/POM/4.0.0"... src/main/java/tagdemo/IterateTag.java : package tagdemo; import java.io.IOException... src/main/resources/META-INF/demotag.tld : <?xml version="1.0" encoding="UTF-8"?> <!DO... Build with: mvn clean install To use it as a dependency in other Maven projects: <dependency> <groupId>tag-demo</groupId> ...
Previous  1 2 3 4 5 6 7 8 9 Next