Read properties values in Java Spring Controller

To configure the environmental parameters, we read the values from property files. I have a controller which upload the files. The uploaded files will be saved in a location, which is defined in a property file. In this example I shall show you how to read the location name from the property file.

public class FileUploadController {
  String uploadFolder;

I have defined the property in file which is saved in src folder (or any other path defined in classpath.


Thats it! The variable uploadFolder will be assigned using the values given by

No Spring WebApplicationInitializer types detected on classpath

Wah, what a stupid error it was!

My Spring web app, which was running smoothly, refused to start. I don’t find any logs in log4j or tomcat log. Only clue I had was –

No Spring WebApplicationInitializer types detected on classpath

Here is how I solved it –

  1. Stop the tomcat
  2. Clean and build all eclipse projects
  3. Goto server tab and select the tomcat server. Press clean. Press clean work directory.
  4. Right click on the tomcat and remove it.
  5. Delete the tomcat from the eclipse run times
  6. Add tomcat server to the eclipse servers again
  7. Start the application


Spring Security

I have written about integrating Spring Security with Spring MVC earlier –

Here is another step by step by instructions. This blog post assumes you already have a Spring MVC working in your workspace. This one uses annotation based configurations.

I have a simple test web application with two URLs.

/ (root URL)


While I’ll leave my / url unprotected, I want to secure /add_expense. Here is how we do it.

Adding Spring Security to Spring4 MVC

This is my project structure.


I wrote very simple MVC controller and it is working.

Add the following to Maven project dependencies.

<!-- Security -->

Under properties I’ve added this.



Following is the controller I’m going to secure. I’ll leave / open and protect /add_expense


Define a Spring security configuration. I have only one user admin.

package org.grassfield.gaja;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;

public class SecurityConfig extends WebSecurityConfigurerAdapter {

public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {

protected void configure(HttpSecurity http) throws Exception {

Initialize security filter chain.

package org.grassfield.gaja;


public class SpringSecurityInitializer extends
AbstractSecurityWebApplicationInitializer {


Load the spring security to Spring MVC Application config. Check the highlighted path.



And finally load everything

package org.grassfield.gaja;


public class SpringMvcInitializer extends
AbstractAnnotationConfigDispatcherServletInitializer {

protected Class<?>[] getRootConfigClasses() {
return new Class[] { ApplicationContextConfig.class };

protected Class<?>[] getServletConfigClasses() {
return null;

protected String[] getServletMappings() {
return new String[] { "/" };







Way to go!

And, finally, here is the pic of the day.

CYmwbxbUQAAWCGH.jpg large
Learning something is a time machine that can bring you back to your school days!

Happy Pongal.
Happy Sankaranti.Happy Utarayan.

The request sent by the client was syntactically incorrect

This seems to be a common error during form submission in Spring WebMVC. Hence finding the root cause behind this may be difficult.

I verified step by step and confirmed that my call reaches my controller. But it breaks with the following error.

400 The request sent by the client was syntactically incorrect

Rightly pointed out at this is my date issue. I had a date field in my form. You can check my previous post on how to add jQuery date picker.

Hence, I need to make some modifications.

I added the following initBinder() method in the controller.

@RequestMapping(value="/add_expense", method=RequestMethod.POST)
    public String addExpense(@ModelAttribute ExpenseDetail expenseDetail, Model model) {
        try {
            System.out.println("===> returning add_expense"+expenseDetail.getExpenseCurrency());
            model.addAttribute("expenseList", new ExpenseDAO().getExpenseRecords());
            model.addAttribute("expenseDetail", new ExpenseDetail());
        } catch (ClassNotFoundException e) {
        } catch (SQLException e) {
        return "home";
    public void initBinder(WebDataBinder binder){
        SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
        binder.registerCustomEditor(Date.class, new CustomDateEditor(sdf, true));



Spring mvc and jQuery DatePicker

We have added a simple CSS using the ResourceHandlers.  Now, it is the time to test jQuery on a Spring MVC. First Step is to display the calendar object on the jsp.

Spring mvc and jQuery DatePicker

Insert the scripts and CSS to head part of jsp

		<sc ript type="text/javascript" src=""></sc ript>
		<sc ript type="text/javascript" src=""></sc ript>
		<link rel="stylesheet" href="">

Add the following javascript. Replace expenseDate with your field id

$(document).ready(function() {
$(function() {

Thats all. The calendar object should rendered on the browser window.

Adding css ResourceHandlers in Spring


CSS to be added to the Spring 4 JSPs


  1. Create folder called resources\theme1\css under webapp. (I use maven project)
    Adding css ResourceHandlers in Spring.PNG
  2. Create main.css under css folder
  3. Add the resource handler in the Application context config
@ComponentScan(basePackages = { "org.grassfield.gaja" })
public class ApplicationContextConfig extends WebMvcConfigurerAdapter {
    @Bean(name = "viewResolver")
    public InternalResourceViewResolver getViewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        System.out.println("---> returning viewResolver");
        return viewResolver;
    public void addResourceHandlers(final ResourceHandlerRegistry registry) {
        System.out.println("---> returning resourcehandlers");




Neither BindingResult nor plain target object for bean name ‘command’ available as request


A JSP with spring form is not rendered properly.

<form:form action=”add_expense”>
<form:label path=”expenseDate”>Expense Date</form:label>
<form:input path=”expenseDate” />
<input type=”submit” />


Error Message:

java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name ‘command’ available as request attribute


I set the request attribute in a different name in the Controller bean.

modelAndView.addObject(“expenseDetail”, new ExpenseDetail());
return modelAndView;

I set the required parameter by name expenseDetail. Hence the form tag was re-written as given below.

<form:form action=”add_expense” commandName=”expenseDetail”>