Unable load dropdown list when the page was loading in spring mvc - spring

I trying to populate the dropdown list when page was loaded.But it is not loaded in UserPage.jsp from Controller.on submit method and also wrote referencedata method.
Controller:-
public ModelAndView onSubmit(HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws Exception {
log.info("onSubmit handleRequest method"
+ request.getParameter("username"));
System.out.println("onSubmit handleRequest method"
+ request.getParameter("username"));
String username = "", password = "";
username = request.getParameter("username");
password = request.getParameter("password");
UserBean ubean = null;
System.out.println("After shownform method called");
HttpSession session = request.getSession(true);
try {
ubean = userservice.chkUsername(username, password);
System.out.println("Information" + ubean.getUsername());
} catch (DataException ex) {
ex.printStackTrace();
// throw ex;
}
session.setAttribute("User", ubean);
EmpPersonalBean personalBean = new EmpPersonalBean();
return new ModelAndView("jsp/UserPage", "EmpPersonalBean", personalBean);
}
protected Map referenceData(HttpServletRequest request) throws Exception {
log.info("UserDBBoardController======================referenceData");
Map referenceData = new HashMap();
List deparementList = new ArrayList();
deparementList = userservice.getDeparmentList();
referenceData.put("deparmentList", deparementList);
return referenceData;
}
UserPage.jsp
<%# page language="java" import="com.aims.bean.*,java.util.HashMap" contentType="text/html;charset=utf-8" pageEncoding="UTF-8"%>
<%#taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%#taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<%#taglib uri="/WEB-INF/tld/c.tld" prefix="c" %>
<html>
<head>
<title>AAI</title>
</head>
<body>
<form:form method="post" modelAttribute="EmpPersonalBean" action="userpage.htm">
<table>
<tr>
<td>Welcome <%=((UserBean)session.getAttribute("User")).getUsername()%></td>
</tr>
<tr>
<td>Department</td>
<td><form:select path="deparment">
<form:option value="NONE" label="--- Select ---" />
<form:options items="${deparmentList}" />
</form:select>
</td>
</tr>
</tr>
</table>
</form:form>
</body>
</html>
public class DepartmentBean {
private String deptcode,deptname;
public String getDeptcode() {
return deptcode;
}
public void setDeptcode(String deptcode) {
this.deptcode = deptcode;
}
public String getDeptname() {
return deptname;
}
public void setDeptname(String deptname) {
this.deptname = deptname;
}
}
And also attached displaying dropdown list in the userpage.sjp
Please help me.How to resolve the issue.

You also need to specify itemLabel and itemValue attributes in <form:options/> tag.
UPDATE
Replace this line in your jsp page. I think it should resolve your problem.
<form:options items="${deparmentList}" itemLabel="deptname" itemValue="deptcode" />
Hope this helps you. Cheers.

<td>Department</td>
<td><form:select path="deparment">
<form:option value="NONE" label="--- Select ---" />
<c:forEach var="department" items="${deparmentList}">
<form:option value="${department}" label="${department}" />
</c:forEach>
</form:select>
</td>
ModelAndView mav = new ModelAndView("viewName");
mav.addObject("deparmentList", deparementList);
return mav;
return modelAndView object.

Related

have HTTP error "Unable to compile class for JSP"

I am working in a JSP project. While runnning the project using Netbeans with Tomcat 7.0.68 server, I got the following exception,
HTTP Status 500 - Unable to compile class for JSP:
HTTP Status 500 - Unable to compile class for JSP:
**type** Exception report
**message** Unable to compile class for JSP:
**description** The server encountered an internal error that prevented it from fulfilling this request.
**exception**
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: [14] in the generated java file: [C:\apache-tomcat-7.0.68\work\Catalina\localhost\Rites1\org\apache\jsp\Register_jsp.java]
The import com.sun.corba.se.spi.presentation.rmi.StubAdapter.request cannot be resolved
An error occurred at line: [14] in the generated java file: [C:\apache-tomcat-7.0.68\work\Catalina\localhost\Rites1\org\apache\jsp\Register_jsp.java]
Syntax error on token "(", . expected
An error occurred at line: [16] in the generated java file: [C:\apache-tomcat-7.0.68\work\Catalina\localhost\Rites1\org\apache\jsp\Register_jsp.java]
The import String cannot be resolved
An error occurred at line: [17] in the generated java file: [C:\apache-tomcat-7.0.68\work\Catalina\localhost\Rites1\org\apache\jsp\Register_jsp.java]
Syntax error on tokens, Name expected instead
**Stacktrace**:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:366)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:490)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:379)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:354)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:341)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:662)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:364)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.68 logs.
Apache Tomcat/7.0.68
I'm building a registration form in a file called Register.jsp in a maven project using netbeans
<%#page import="com.sun.corba.se.spi.presentation.rmi.StubAdapter.request(
Object, String, boolean)"%>
<%#page import="java.lang.ClassNotFoundException"%>
<%#page import="java.io.FileNotFoundException"%>
<%#page import="java.io.InputStream"%>
<%#page import="java.io.FileInputStream"%>
<%#page import="java.io.File"%>
<%#page import="javax.swing.JComboBox"%>
<%#page import="javax.swing.JTextField"%>
<%#page import="javax.swing.JRadioButton"%>
<%#page import="java.sql.*" %>
<%#page import="java.util.Date" %>
<% Class.forName("com.mysql.jdbc.Driver");%>
<%#page contentType="text/html" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" ></meta>
<link rel="stylesheet" type="text/css" href="CSS/RitesCSS.css"/>
<link rel="stylesheet" type="text/css" href="CSS/Resize.css" media="screen and (max-widht:1000px)"/>
<link rel="stylesheet" type="text/css" href="CSS/Menu.css"/>
<link rel="stylesheet" type="text/css" href="CSS/Layout.css"/>
<style type="text/css">
body{
margin-bottom: 0px;
margin-left: 0px;
margin-right: 0px;
margin-top: 0px;
}
</style>
<title>Register Now</title>
</head>
<body>
<%!
public class Followers {
String URL = "jdbc:mysql://localhost:3306/rites";
String USERNAME = "myusername";
String PASSWORD = "mypass";
Connection connection = null;
PreparedStatement insertUsers = null;
ResultSet resultSet = null;
public Followers() {
try {
connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
insertUsers = connection.prepareStatement(
"INSERT INTO followers (HajjID,UserName,ID,Phone,Country,Passport,Language,Gender,Photo,Password,State,DOB,adress)"
+ "VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?);"
);
} catch (SQLException e) {
e.printStackTrace();
}
}
public int setFollowers(String HajjID, String UserName, String ID, String Phone, String country, String PassportNo, String Language, String rdoGender, String img, String txtPassword, String States, String DoB, String txtarAddress) {
int result = 0;
FileInputStream fis = null;
File Photo = new File("");
img = fis.toString();
try {
insertUsers.setString(1, HajjID);
insertUsers.setString(2, UserName);
insertUsers.setString(3, ID);
insertUsers.setString(4, Phone);
insertUsers.setString(5, country);
insertUsers.setString(6, PassportNo);
insertUsers.setString(7, Language);
insertUsers.setString(8, rdoGender);
try {
fis = new FileInputStream(Photo);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
insertUsers.setString(9, img);
insertUsers.setString(10, txtPassword);
insertUsers.setString(11, States);
insertUsers.setString(12, DoB);
insertUsers.setString(13, txtarAddress);
result = insertUsers.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
}
%>
<%
int result = 0;
if (request.getParameter("submit") != null) {
String Type = new String();
String HajjID = new String();
String UserName = new String();
String ID = new String();
String Phone = new String();
String country = new String();
String PassportNo = new String();
String Language = new String();
String rdoGender = new String();
String Photo = new String();
String txtPassword = new String();
String States = new String();
String DoB = new String();
String txtarAddress = new String();
if (request.getParameter("Type").toString() != null) {
Type = request.getParameter("Type").toString();
}
if (request.getParameter("HajjID").toString() != null) {
HajjID = request.getParameter("HajjID").toString();
}
if (request.getParameter("ID").toString() != null) {
ID = request.getParameter("ID").toString();
}
if (request.getParameter("Phone").toString() != null) {
Phone = request.getParameter("Phone").toString();
}
if (request.getParameter("country").toString() != null) {
country = request.getParameter("country").toString();
}
if (request.getParameter("PassportNo").toString() != null) {
PassportNo = request.getParameter("PassportNo").toString();
}
if (request.getParameter("Language").toString() != null) {
Language = request.getParameter("Language").toString();
}
if (request.getParameter("rdoGender").toString() != null) {
rdoGender = request.getParameter("rdoGender").toString();
}
if (request.getParameter("Photo").toString() != null) {
Photo = request.getParameter("Photo").toString();
}
if (request.getParameter("txtPassword").toString() != null) {
txtPassword = request.getParameter("txtPassword").toString();
}
if (request.getParameter("States").toString() != null) {
States = request.getParameter("States").toString();
}
if (request.getParameter("DoB").toString() != null) {
DoB = request.getParameter("DoB").toString();
}
if (request.getParameter("txtarAddress").toString() != null) {
txtarAddress = request.getParameter("txtarAddress").toString();
}
Followers users = new Followers();
result = users.setFollowers(HajjID, UserName, ID, Phone, country, PassportNo, Language, rdoGender, Photo, txtPassword, States, DoB, txtarAddress);
}
%>
<form id="form1" runat="server" action="register.php" method="POST">
<div id="contaner">
<div id="header">
<img src="logo.jpg" align="left"></img>
<h1> Rites</h1>
<li>Register now</li>
</div>
<div id="menu">
<ul>
<li>Home</li>
<li>About</li>
<li>Rites</li>
<li>Contact us</li>
<li>Login</li>
</ul>
</div>
<div id="mainbody">
<div id="pageHeading"> <v>Registeration</v></div>
<div id="bodyLeft">
</div>
<div id="bodyRight"><h5>
<form name="registration" action="RegServlet" method="post" id="registerForm">
<table id="table1">
<tr>
<td>User name</td>
<td><input type="text" name="UserName" id="txt" class='StyleTxtField'/></td>
</tr>
<tr>
<td>ID</td>
<td><input type="text" name="ID" id="txt" class='StyleTxtField'/></td>
</tr>
<tr>
<td>Phone</td>
<td><input type="text" name="Phone" id="txt" class='StyleTxtField'/></td>
</tr>
<tr>
<td>Country</td>
<td><select name="country" id="txt" class='StyleSelectFiled'>
<option value="">Country...</option>
<option value="Afganistan">Afghanistan</option>
<option value="Albania">Albania</option>
<option value="Algeria">Algeria</option>
</select></td>
</tr>
<tr>
<td>Date of Birth</td>
<td>
<input type="date" name="DoB" id="txt" class='StyleTxtField'/>
</td>
</tr>
<tr>
<td>Address</td>
<td>
<textarea name="txtarAddress" id="txt" class='StyleTxtField'></textarea>
</td>
</tr>
<tr>
<td>Type</td>
<td><input type="radio" name="Type" id="Leader" value="Leader" ><label for="Leader">Leader</label>
<input type="radio" name="Type" id="Follower" value="Follower" onsubmit="setFollowers"><label for="Follower">Follower</label></td>
</tr>
<tr>
<td></td>
<input type="hidden" name="hidden" value="<%= result%>" />
<td><br><button type="reset" id="btm"><m>Reset</m></button>
<button type="submit" id="btm"><m>Register</m></button></td>
</tr>
</table><br>
</form></h5>
<SCRIPT language="JavaScript">
<!--
function dusplayResults()
{
if (document.myForm.hidden.value === 1) {
alert("Data Inserted1!");
}
}
</SCRIPT>
</div>
</div>
</div>
</form>
</body>
</html>
i want to do this "if the chosen radio button named "type" is follower insert the data into the follower table, and if the chosen radio button named "type" is leader insert the data into the leader table"
I'm using a database called rites in phpmyadmine
<%#page import="com.sun.corba.se.spi.presentation.rmi.StubAdapter.request(
Object, String, boolean)"%>
your import is wrong.
use
<%# page import="static com.sun.corba.se.spi.presentation.rmi.StubAdapter.register" %>

Pre-populate the Form field by formBackingObject method using standard html code in spring web

I just trying to pre-populate the form field in user form by formBackingObject.
I am using simple html code not spring tags to create the field.
Actually I'v tried with spring tag but spring tags for input filed is not working so I moved to simple html code but spring tags works for <form:form action=**> but not for <form:input path="name" />
I'v check taglib import segment but its fine and I don't understand if <form:form />
is working then why <form:input path="name" /> is not working.
I'm describing this because somewhere and someone from StackOverflow said that for getting benefit of formBackingObject, I'v to use spring tags for input field but in my case its not working.
Here I'm considering of formBackingObject only for pre-populating form field that what my question title suggest. Anyhow I'v to do it soon.
I'v gone through about 30-40 page link for finding of this solution but .....
I need a very simple example of it where jsp field getting value of object that is return by formBackingObject
I'm not familiar with annotation
Here is my tried and failed example
contact_form.jsp
<form:form action="edit.htm" commandName="contact" method="POST">
Name:<input type="text" name="name" value=${contact.name} /><br>
Address:<input type="text" name="address" value=${contact.address}/><br>
<input type="submit" value="Submit"/><br>
EditController
public class EditController extends SimpleFormController {
private static Contact cont = new Contact();
static {
cont.setAddress("aaa");
cont.setName("bbb");
}
#Override
protected void doSubmitAction(Object command) throws Exception {
System.out.println("In do submit method");
}
#Override
protected Object formBackingObject(HttpServletRequest request)
throws Exception {
System.out.println("In FormBackingObject");
return cont;
}
spring-servlet.xml
<bean id="/edit.htm" class="tryPack7.EditController">
<property name="CommandClass" value="tryPack7.Contact" />
<property name="commandName" value="contact" />
<property name="formView" value="contact_form" />
<property name="successView" value="success" />
</bean>
Thanks in advance
Assuming you have specified handler mapping in your confog xml file:
Make sure you have jsp on similar lines as below:
<%# taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%# taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<html>
<head>
<title>Sample Page</title>
</head>
<body>
<form:form commandName="contact" method="POST">
<table>
<tr >
<td>Name:<form:input path="name"/></td>
</tr>
<tr >
<td>Address:<form:input path="address"/></td>
</tr>
<tr>
<td colspan="3"><input type="submit"/></td>
</tr>
</table>
</form:form>
</body>
</html>
Also, rather than using static way, I would suggest to initialize contact form in formBackingObject as shown below:
public class EditController extends SimpleFormController {
public ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
Contact contact=(Contact)formBackingObject(request);
return new ModelAndView("contact_form","contact",contact);
}
public Object formBackingObject(HttpServletRequest req)
{
Contact contact = new Contact();
contact.setAddress("aaa");
contact.setName("bbb");
return contact;
}
}

Property not found on java.lang.String, For Object array list in custom Tag

I am trying to build a menu at runtime depending on the server call in JSP.
The model that represents the menu is given below:
import java.util.ArrayList;
import java.util.List;
public class MenuItem {
public String menuText;
public List<MenuItem> subMenuItems=new ArrayList<MenuItem>();
public MenuItem(String menuText) {
super();
this.menuText = menuText;
this.subMenuItems = new ArrayList<MenuItem>();
}
public MenuItem(){
}
public MenuItem(String menuText, List<MenuItem> subMenuItems) {
super();
this.menuText = menuText;
this.subMenuItems = subMenuItems;
}
// #Override
// public String toString() {
// // TODO Auto-generated method stub
// StringBuffer buffer = new StringBuffer();
// for (MenuItem menuItem : getSubMenuItems()) {
// buffer.append(menuItem.toString());
// }
// return (" Menu --->" + getMenuText() + buffer.toString());
//
// }
public String getMenuText() {
return menuText;
}
public void setMenuText(String menuText) {
this.menuText = menuText;
}
public List<MenuItem> getSubMenuItems() {
return subMenuItems;
}
public void setSubMenuItems(List<MenuItem> subMenuItems) {
this.subMenuItems = subMenuItems;
}
}
For the above model we pass the sample menu from the controller:
List<MenuItem> menuMainList = new ArrayList<MenuItem>();
List<MenuItem> submenus = new ArrayList<MenuItem>();
MenuItem item1= new MenuItem();
item1.setMenuText("****");
submenus.add(item1);
MenuItem item2 = new MenuItem();
item2.setMenuText("SampleMenu");
item2.setSubMenuItems(submenus);
menuMainList.add(item2);
System.out.println(menuMainList);
model.addAttribute("menuItem", menuMainList);
On the JSP Page we try to do the following:
<c:forEach items="${menuItem}" begin="0" var="menuListItem">
<c:choose>
<c:when test="${empty menuListItem.subMenuItems}">
<div>
<c:out value="${menuListItem.menuText}" />
</div>
</c:when>
<c:otherwise>
<div>
<span><c:out value="${menuListItem.menuText}" /></span>
<div style="width: 150px;">
<cobTags:menuDivItem menuList="${menuListItem.subMenuItems}"></cobTags:menuDivItem>
</div>
</div>
</c:otherwise>
</c:choose>
</c:forEach>
And the custom tag being:
<%# tag language="java" pageEncoding="ISO-8859-1"%>
<%# attribute name="menuList" required="true"%>
<%# taglib tagdir="/WEB-INF/tags" prefix="cobTags"%>
<%# taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:forEach items="${menuList}" begin="0" var="menuListItem">
<div>
<cobTags:drawMenuItem menuItem="${menuListItem}"></cobTags:drawMenuItem>
<c:out value="${menuListItem}" />
</div>
</c:forEach>
And
<%# tag language="java" pageEncoding="ISO-8859-1"%>
<%# attribute name="menuItem" type="com.sample.bean.MenuItem"
required="true"%>
<%# taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<div style="color: red;">
<c:out value="${menuItem.menuText}" />
</div>
When I execute the following code, I am getting the error:
Cannot convert [com.sample.bean.MenuItem#547ca73] of type class
java.lang.String to class com.sample.bean.MenuItem
I am not getting why the model's toString method is getting called when I pass the object to the custom tag.?
Any pointers?
Declaring the type of the argument should fix the problem:
<%# attribute name="menuList" required="true" type="java.util.Collection" %>

The request sent by the client was syntactically incorrect, Spring with Hibernate Annotations

I searched everywhere for this error and looked through every single thread here with the same title, changed a lot in my code but still, the error is there.
it says:
HTTP Status 400 -
type Status report
message
description The request sent by the client was syntactically incorrect.
Apache Tomcat/7.0.35
My Controller code is:
#RequestMapping(value = "/manageInventory.htm", method = RequestMethod.GET)
public ModelAndView manageInventory(HttpSession session) {
ArrayList<Product> products = new ArrayList<Product>();
Manufacturer manufacturer = (Manufacturer) manufacturerDAO
.getByUsername(((UserAccount) session.getAttribute("user"))
.getUsername());
products = productDAO.getProductListByManufacturer(manufacturer
.getManufacturerName());
System.out.print(products.get(0).getProductName());
ModelAndView view = new ModelAndView("manageInventory");
view.addObject("products", products);
InventoryItem inventoryItem = new InventoryItem();
view.addObject("inventoryItem", inventoryItem);
return view;
}
#RequestMapping(value = "/manufacture.htm", method = RequestMethod.POST)
public ModelAndView manufactureProduct(HttpSession session, BindingResult result,
#ModelAttribute("inventoryItem") #Valid InventoryItem inventoryItem) {
System.out.print(result.getErrorCount()+" "+result.getAllErrors());
ModelAndView view = null;
if(!result.hasErrors())
{
Manufacturer manufacturer = manufacturerDAO
.getByUsername(((UserAccount) (session.getAttribute("user")))
.getUsername());
inventoryItem.setAvailability(true);
inventoryItem.setManufacturer(manufacturer);
manufacturer.getInventory().add(inventoryItem);
manufacturerDAO.update(manufacturer);
view = new ModelAndView("done");
}
else
{
view = new ModelAndView("manageInventory");
}
return view;
}
The first method adds inventoryItem into the model and I am fetching that for validations afterwards.
I am using tiles so,My tile for this is:
<%# taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%# taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<body>
<h2>Add Inventory</h2>
<br />
<form:form modelAttribute="inventoryItem" action="manufacture.htm" method="post">
<table>
<tr>
<td>Select Product:</td>
<td><form:select path="product">
<c:forEach var="product" items="${products}">
<form:option value="${product}">${product.productName}</form:option>
</c:forEach>
</form:select></td>
<td>Select Quantity:</td>
<td>
<form:input path="quantity" placeholder="Quantity"/><br />
<font color="red"><form:errors path="quantity"/> </font>
</td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="Manufacture">
</td>
</tr>
</table>
</form:form>
</body>
My POJO has the following validation:
#NotNull
private int quantity;
Please help. Thanks in advance.
I forgot to add HttpServletRequest request to the method input parameters.
I added it and it stared working. strange, but worked. :)

How to reject a field from bean for validation when binding?

I have three fields department_Id,department_Name,department_location in departmentForm act as a model object in this model form.
I have use annotation to validate the fields. Now, I want to only use two fields in different jsp page say create.jsp and one field in different jsp page say getDepartmentById.
When I press submit button of create.jsp, validation is happening but after providing correct information its not submitted cause in this page.
I haven't give one field department_Id which is auto generated by my DAO layer. So, please help me, how to reject this value to execute my create.jsp page for successfully creating department in database.
When I printed the BindingResult object, it shown as follow:
Field error in object 'departmentForm' on field 'departmentId': rejected value [null];
codes [NotEmpty.departmentForm.departmentId,NotEmpty.departmentId,NotEmpty.java.lang.String,NotEmpty];
arguments [org.springframework.context.support.DefaultMessageSourceResolvable:
codes [departmentForm.departmentId,departmentId]; arguments [];
default message [departmentId],org.hibernate.validator.constraints.NotEmpty.message},
[Ljava.lang.Class;#4fc4a198,[Ljava.lang.Class;#764d2b11];
default message [may not be empty]`
This is how I coded in controller:
#RequestMapping(value = "/createDepartment", method = RequestMethod.POST)
public String createEmployee(#Valid DepartmentForm departmentForm,
BindingResult bindingResult, Map<String, DepartmentForm> model)
throws Exception {
if (bindingResult.hasErrors()) {
System.out.println(bindingResult);
bindingResult.reject(departmentForm.getDepartmentId());
return "departmentForm";
}
System.out.println("mr ankur jadiy");
model.put("departmentForm", departmentForm);
departmentForm.setUpdateStatus('A');
if (departmentForm.getUpdateStatus() == 'A') {
departmentServiceImpl
.actionDecider(convertDeptFormToDeptBO(departmentForm));
}
return "Success";
}
my DepartmentForm code is as follow:
package com.nousinfo.tutorial.model;
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.NotEmpty;
public class DepartmentForm {
#NotEmpty
#Size(min = 1, max = 20,message="")
private String departmentId;
#NotEmpty
private String departmentName;
private String departmentLocation;
private Character updateStatus;
public String getDepartmentId() {
return departmentId;
}
public void setDepartmentId(String departmentId) {
this.departmentId = departmentId;
}
public String getDepartmentName() {
return departmentName;
}
public void setDepartmentName(String departmentName) {
this.departmentName = departmentName;
}
public String getDepartmentLocation() {
return departmentLocation;
}
public void setDepartmentLocation(String departmentLocation) {
this.departmentLocation = departmentLocation;
}
public Character getUpdateStatus() {
return updateStatus;
}
public void setUpdateStatus(Character updateStatus) {
this.updateStatus = updateStatus;
}
}
and my create.jsp is
<%# page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%# taglib uri="http://jakarta.apache.org/taglibs/input-1.0" prefix="input"%>
<%# taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%# taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%# taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Create Department</title>
<link rel="stylesheet" href="css/style.css" type="text/css"></link>
</head>
<body>
<table width="1254" height="74" border="0" align="center">
<tr>
<td width="300" height="68" align="center" bgcolor="#99CCFF"><h2>
<span class="style1">Employee Details </span>
</h2></td>
<td width="100" height="68" align="center" bgcolor="#FFFFFF"><img
src="./image/emps.jpg" width="190" height="92" /></td>
</tr>
</table>
<p>
<br />
</p>
<hr size="1" width="786">
<form:form id="form" method="post" action="/EmployeeWebSpring/departmentController/createDepartment"
modelAttribute="departmentForm">
<table>
<tr>
<form:hidden path="updateStatus" />
</tr>
<tr>
<td>
Department_Name:
<font color="red"><form:errors path="departmentName" /></font>
</td>
</tr>
<tr>
<td><form:input path="departmentName" /></td>
</tr>
<tr>
<td>
Department_Location:
<font color="red"><form:errors path="departmentLocation" /></font>
</td>
</tr>
<tr>
<td><form:input path="departmentLocation" /></td>
</tr>
</table>
<br>
<br />
<p> </p>
<br>
<tr>
<td><input type="submit" name="method" value="save" /></td>
<td><input type="submit" name="method" value="cancel" /></td>
</tr>
<hr size="1" width="786">
<p> </p>
</form:form>
</body>
</html>
What the error says is that you're missing value for departmentId, which is not surprising since you defined it as
#NotEmpty
#Size(min = 1, max = 20,message="")
You don't really need to validate departmentId if it's autogenerated by your code. You probably should remove it from the DepartmentForm, especially since it's not in the form, or at least make it optional.
You can make it mandatory in your business object, but the form backing object should reflect what's in the form.
update
If departmentId is a database-generated id, you should set it as disallowed in your controller's InitBinder:
#InitBinder
public void initBinder(WebDataBinder binder) {
binder.setDisallowedFields(new String[] { "departmentId" });
}

Resources