0

I am not able to read form my messages.properties file (under/src/main/resources)

Env: Spring MVC 4.3.14

MyAppConfig.java:

@Bean
public MessageSource messageSource() {
    ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
    messageSource.setBasename("messages");
    return messageSource;
}

In my jsp (newuserregistration.jsp) i have:

<form:form method="POST" modelAttribute="user" class="form-horizontal">


<div class="row">
<label class="col-md-3 control-label" for="userfirstname">First
    Name</label>
<div class="col-md-7">
    <form:input type="text" path="userfirstname" id="userfirstname"
class="form-control input-sm" />
    <div class="has-error">
        <form:errors path="userfirstname" class="help-inline" />
    </div>
</div>

In my css i have:

.has-error{
color:red;

}

Entity class (AppUsers.java) has:

@Basic(optional = false)
@NotNull
@NotEmpty
//@Size(min = 1, max = 45)
@Column(name = "USERFIRSTNAME", nullable = false, length = 45)
private String userfirstname;

My messages.properties has:

NotEmpty.user.userfirstname=First name can not be blank. 

And controller has:

 @Autowired
MessageSource messageSource;

    @RequestMapping(value = {"/registernewuser"}, method = RequestMethod.GET)
public String newUser(ModelMap model) {
    AppUsers user = new AppUsers();
    model.addAttribute("user", user);



 @RequestMapping(value = {"/registernewuser"}, method = RequestMethod.POST)
public String saveUser(@Valid AppUsers user, BindingResult result,
        ModelMap model) {
    model.addAttribute("user", user);
if (result.hasErrors()) {
        model.addAttribute("user", user);
        model.addAttribute("loggedinuser", getPrincipal());
        return "newuserregistration";
    }

Somehow the error message is not displayed on my jsp. What I am missing or doing wrong here?

I did sysout for result and it gave me -

org.springframework.validation.BeanPropertyBindingResult: 1 errors  Field error in object 'appUsers' on field 'userfirstname': rejected value []; codes [NotEmpty.appUsers.userfirstname,NotEmpty.userfirstname,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [appUsers.userfirstname,userfirstname]; arguments []; default message [userfirstname]]; default message [may not be empty]
Ajay Kumar
  • 2,906
  • 3
  • 23
  • 46
  • Not sure if it is connected to : https://stackoverflow.com/questions/18533680/spring-mvc-not-able-to-read-messages-properties-file – Ajay Kumar Feb 23 '18 at 16:56

2 Answers2

0

Can you remove NotEmpty.user prefix from resource file.

Resource file message.properties

userfirstname=First name can not be blank.

lrathod
  • 1,094
  • 1
  • 9
  • 17
0

The following worked for me:

Removed model.addAttribute("user", user); and Added -- @ModelAttribute("user") -- attribute to my POST method. Here is the working snippet:

@RequestMapping(value = {"/registernewuser"}, method = RequestMethod.POST)
public String saveUser(@ModelAttribute("user") @Valid AppUsers user, BindingResult result,
        ModelMap model) {
    if (result.hasErrors()) {
        model.addAttribute("loggedinuser", getPrincipal());
        return "newuserregistration";
    }

However I am still wondering what was wrong in the initial situation.

Ajay Kumar
  • 2,906
  • 3
  • 23
  • 46