2012년 2월 21일 화요일

Failed to convert property value of type org.springframework.web.multipart.commons.CommonsMultipartFile to required type java.lang.String for property attach

Spring Error Messages : Failed to convert property value of type org.springframework.web.multipart.commons.CommonsMultipartFile to required type java.lang.String for property attach;
nested exception is java.lang.IllegalStateException: Cannot convert value of type [org.springframework.web.multipart.commons.CommonsMultipartFile] to required type [java.lang.String] for property attach: no matching editors or conversion strategy found;

 Spring FileUpload Method convert property value of type missmatch

Domain.java

public class Domain {
     String name; 
     String file;    // => to  CommonsMultipartFile file;

    ..  getter  and setter ..
}

Controller.java
public class uploadController {

               public String uploadHandle(@RequestParam ("file") MultipartFile file ){
                       // more method Control;
               }
}

upload.jsp

<form  method="post" action="upload.do" commandName="domain" 
                                 enctype="multipart/form-data >
<input  type="text" id="name" name="name" />
<input  type="file" id="file" name="file" />
<input type="sumit" value="transfer"  />
</form>
 



 

2012년 2월 20일 월요일

SpringFramework Annotation Config and ResourceRegister

Webinitializer.java
// Comment WebApplicationInitilizer = > Servlet 3.0
public class WebInitializer implements WebApplicationInitializer {

    public void onStartup(ServletContext container) throws ServletException {
       
        // Create the 'root' Spring application Context
        AnnotationConfigWebApplicationContext root
                                       = new AnnotationConfigWebApplicationContext();
        // Application.java
        root.register(Application.class);
       
        // Manager the life cycle if the root application context
        container.addListener(new ContextLoaderListener (root));

        // Create the dispatcher servlet's Spring application context
        AnnotationConfigWebApplicationContext dispatcherContext
                                       = new AnnotationConfigWebApplicationContext();
        // DispatcherContext.java
        dispatcherContext.register(DispatcherContext.class);

        // Register and map the dispatcher servlet
        ServletRegistration.Dynamic dispatcher =
                                    container.addServlet("dispatcher", new     
                                                                         DispatcherServlet(dispatcherContext));
        dispatcher.setLoadOnStartup(1);
        dispatcher.addMapping("/");

     }
}


DispatcherContext.java

@Configuration
@EnableWebMvc

@ImportResource({})
@ComponentScan (basePackages = "com.company.show" ,
 excludeFilters = {},includeFilters={})

public class DispatcherContext extends WebMvcConfigurerAdapter {

    private Environment environment;


    // View Resolver Setting
    <!-- Resolves views selected for rendering by @Controllers to .jsp resources in the  
                                                /WEB-INF/views directory -->
    <beans:bean  

                 class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <beans:property name="prefix" value="/WEB-INF/views/" />
        <beans:property name="suffix" value=".jsp" />
    </beans:bean>

    @Bean
    public InternalResourceViewResolver internalResourceViewResolver (){
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/WEB-INF/views/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }
   
    // Resource Setting
    public void addResourceHandlers(ResourceHandlerRegistry registry){
        registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
        // Exercise
        registry.addResourceHandler("/css/**").addResourceLocations("/css/");
        registry.addResourceHandler("/images/**").addResourceLocations("/images/");
      }
        // This same configuration Spring servlet-context.xml
        <!-- Handles HTTP GET requests for /resources/** by efficiently serving up 
                static  resources in the ${webappRoot}/resources directory -->
         <!-- Handles HTTP GET requests for /resources/** config/DispatcherContext.java 

                    Class=addResourceHandlers Append select choice  -->
         //<resources mapping="/resources/**" location="/resources/" />
         //<resources mapping="/jquery/**"    location="/jquery/" />
         //<resources mapping="/css/**"       location="/css/" />

       
     /* ----------------------------------------------------------------------
     <beans:bean id="multipartResolver" 
           class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
         <beans:property name="maxUploadSize">
              <beans:value>10000000</beans:value>
         </beans:property>
      </beans:bean>
      ------------------------------------------------------------------------*/
     @Bean
    public CommonsMultipartResolver multipartResolver (){
       
        System.out.println("=======>>>>> DispatcherContext multipartResolver Called :");
        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
        multipartResolver.setMaxUploadSize(10000000);
        return multipartResolver;
    }


   

}

Application.java

@Configuration
@EnableTransactionManagement(mode=AdviceMode.ASPECTJ)
public class Application {
}

2012년 2월 19일 일요일

Spring ValidationUtils email Checker

public class DomainValidation implements Validator {
     public boolean supports(Class<?> clazz) {
            return Domain.class.isAssignableFrom(clazz);
     }

     public void validate (Object target , Errors errors ){
                  Domain domain = (Domain) target;
                   ValidationUtils.rejectIfEmptyOrWhitespace(errors, "category", 
                           "required.category","category required !");
                  ValidationUtils.rejectIfEmptyOrWhitespace(errors, "email", 
                           "required.email","Email required !");
                  if (!isValidEmailAddress(board.getEmail())) errors.rejectValue("email",
                                                                   "email.invalid", "Email address is invalid");   

      }

      public boolean isValidEmailAddress(String emailAddress){
        String expression="^[\\w\\-]([\\.\\w])+[\\w]+@([\\w\\-]+\\.)+
                                  [A-Z]{2,4}$";
        CharSequence inputStr = emailAddress;
        Pattern pattern = Pattern.compile(expression,Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(inputStr);
        return matcher.matches();
    } 



}

Neither BindingResult nor plain target object for bean name 'domain' available as request attribute

Spring framework  validation form error :

@Controller
public ValidationController {
     @RequrstMapping (value="addForm.do",method=RequestMethod.GET
     public String addFormHandle (Model model){
              Domain domain = new Domain();            //  required domain annotation valid
              model.addAttribute ("domain",domain);   //  required domain annotation valid                    return "addForm";
      }

     @RequestMapping(value="addForm.do",method=RequestMethod.POST
      public String addFormPostHandle (@ModelAttribute Domain domain,BindingResult result ){
              if (result.hashErrors ()) {
                   return "addForm";
              } else {
                   return "done.jsp";
              }
    }
}

addForm.jsp

 <form:form  method="post" action="addForm.do" commandName="domain"   enctype="multipart/form-data">

     <table>
         <tr>
            <td><form:input  id="test" /></td><td><form:errors path="test" /></td>
         </tr>
     </table>
 </form:form>

Domain.java

public Domain {
    @NotEmpty
    String test;
    .... getter and setter
}