我是SpringMVC的新手。我开发了一个执行选择,插入,更新和删除的示例应用程序。
下面是我的Bean类
@Id
@Column
private int student_id;
private String name;
private String age;
private String city;
private String country;
private Integer phone;
private int hsc;
private int sslc;
private int college;
/*getter and setters*/
下面是我的控制器类
@Controller
public class StudentController {
private static final Logger logger = Logger.getLogger(StudentController.class);
@Autowired
private StudentService studentService;
@RequestMapping(value = "/students", method = RequestMethod.GET)
public String listStudents(Model model){
if(logger.isDebugEnabled()){
logger.debug("listStudents method is executed!");
}
logger.error("This is an error message", new Exception("Testing"));
model.addAttribute("student", new StudentDO());
model.addAttribute("listStudents", this.studentService.listStudents());
return "students";
}
@RequestMapping(value = "/students/add", method = RequestMethod.POST)
public String addStudent(@ModelAttribute("student") StudentDO studentDO){
if(studentDO.getStudent_id() == 0){
/**new person, add it*/
this.studentService.addStudent(studentDO);
}else{
/**existing person, call update*/
this.studentService.updateStudent(studentDO);
}
return "redirect:/students";
}
}
下面是我的JSP页面
<c:url var="addAction" value="/students/add" ></c:url>
<form:form action="${addAction}" commandName="student">
<table>
<c:if test="${!empty student.name}">
<tr>
<td>
<form:label path="student_id">
<spring:message text="STUDENT_ID"/>
</form:label>
</td>
<td>
<form:input path="student_id" readonly="true" size="8" disabled="true" />
<form:hidden path="student_id" />
</td>
</tr>
</c:if>
<tr>
<td>
<form:label path="name">
<spring:message text="Name"/>
</form:label>
</td>
<td>
<form:input path="name" />
</td>
</tr>
<tr>
<td>
<form:label path="age">
<spring:message text="Age"/>
</form:label>
</td>
<td>
<form:input path="age" />
</td>
</tr>
<tr>
<td>
<form:label path="city">
<spring:message text="City"/>
</form:label>
</td>
<td>
<form:input path="city" />
</td>
</tr>
<tr>
<td>
<form:label path="country">
<spring:message text="Country"/>
</form:label>
</td>
<td>
<form:input path="country" />
</td>
</tr>
<tr>
<td>
<form:label path="phone">
<spring:message text="Phone"/>
</form:label>
</td>
<td>
<form:input path="phone" />
</td>
</tr>
<tr>
<td>
<form:label path="hsc">
<spring:message text="HSC"/>
</form:label>
</td>
<td>
<form:input path="hsc" />
</td>
</tr>
<tr>
<td>
<form:label path="sslc">
<spring:message text="SSLC"/>
</form:label>
</td>
<td>
<form:input path="sslc" />
</td>
</tr>
<tr>
<td>
<form:label path="college">
<spring:message text="College"/>
</form:label>
</td>
<td>
<form:input path="college" />
</td>
</tr>
<tr>
<td colspan="2">
<c:if test="${!empty student.name}">
<input type="submit" value="<spring:message text="Edit Student"/>" />
</c:if>
<c:if test="${empty student.name}">
<input type="submit" value="<spring:message text="Add Student"/>" />
</c:if>
</td>
</tr>
现在我面临两个问题。输入值并单击“添加学生”按钮后,收到以下错误。
org.springframework.validation.BindException:
org.springframework.validation.BeanPropertyBindingResult: 1 errors
Field error in object 'student' on field 'phone': rejected value [9962287970];
codes [typeMismatch.student.phone,typeMismatch.phone,typeMismatch.java.lang.Integer,typeMismatch];
arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [student.phone,phone]; arguments [];
default message [phone]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.lang.Integer' for property 'phone';
nested exception is java.lang.NumberFormatException: For input string: "9962287970"]
问题1.请参阅“嵌套异常是java.lang.NumberFormatException:For输入字符串:”9962287970“”。因为它超出了int的范围。请尝试将其更改为String或Long。
问题2.在Java中,int是一种基元类型,它不被视为对象。只有对象可以有空值。一旦类的对象初始化了所有设置为默认值的基元,对于int来说,默认值为0。
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
您已超过整数范围,因此要么使用Long
而不是int
,要么将其设为String
变量类型。应用更改后不要忘记删除表。
@Id
@Column
private int student_id;
private String name;
private String age;
private String city;
private String country;
private Long/String phone;
private int hsc;
private int sslc;
private int college;
问题是值9962287970超出整数
类型的范围。
Integer.MAX_VALUE < 9962287970
要修复此更改私人整数电话;
到私人长电话;
OR私人字符串电话;
如果您使用String
,则可以将其他字符(如phone0.05中。
参考http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
int
的 defauld 值为 0,但对于 Integer
,它不是零,因为它是一个对象,因此您必须将值初始化为 0;
我有两个实体,它们使用一个主键互相引用,主键是一个实体的整数。我不确定我做这件事的方式是否正确。 下面是引用主键id为int的实体 下面是我们从上面的实体中将外键设置为Kmichango kandaMchango的实体。 这里是表单的一部分,我在这里提交了用户在jumuiya_michango_form.html中提供的数据 下面是我的控制器中用于链接到表单和发布数据的两个方法 在我提交表单后,我
我正在关注Spring in Action 5,在按下提交按钮后创建Taco模型时遇到问题。这是我的设计Taco控制器类: 以及我捕获的错误消息: 炸玉米饼实体如下所示: 以及我的配料实体: 这是一个html页面,必须使用所选成分创建新的Taco对象: 我该怎么修理它?谢谢你的预付款。
我是Spring MVC的新手,试图构建一个示例应用程序,我试图将数据保存到一个名为EmployeeDetails的表中,该表与表用户有一对一的关系。提交表单后,我在字段“user”的对象“employee details”中得到了这个错误字段:rejected value[Users];代码[typemismatch.employeeDetails.user,typemismatch.user,
这是控制器代码部分: 我收到这条消息: 出现错误(类型=错误请求,状态=400)。无法将类型[java.lang.String]的值转换为所需类型[java.util.Date];嵌套异常为org.springframework.core.convert.conversionfailedexception:无法将值“Wed Jun 08 00:00:00 WET 2016”从类型[java.lan
我想在json中以的形式发布上面的字符串日期,但我收到了400个错误请求。有人能帮忙吗。我使用过,但它也没有帮助我。
上面表单的控制器 简单pojo类 这个链接没有帮助我解决类似的问题