Java 在JSP中显示日期和时间
我在显示日期方面有问题。该应用程序工作正常,但在实体中添加日期后停止。这是我的密码。有人能帮我吗 堆栈跟踪:Java 在JSP中显示日期和时间,java,jsp,el,Java,Jsp,El,我在显示日期方面有问题。该应用程序工作正常,但在实体中添加日期后停止。这是我的密码。有人能帮我吗 堆栈跟踪: exception org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/pages/contact/showContacts.jsp at line 103 100: <td>${contact.email}<
exception
org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/pages/contact/showContacts.jsp at line 103
100: <td>${contact.email}</td>
101: <td>${contact.telephone}</td>
102: <td>${contact.department.name}</td>
103: <td>${contact.dateofemployment}</td>
104:
105:
106: <!-- <td><a href="delete/${contact.id}.html">delete</a></td>-->
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1180)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:950)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:369)
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
...
联系人:
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import pl.ivmx.model.Department;
@Entity
@Table(name="CONTACTS")
public class Contact {
@Id
@Column(name="ID")
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column(name="FIRSTNAME")
private String firstname;
@Column(name="LASTNAME")
private String lastname;
@Column(name="EMAIL")
private String email;
@Column(name="TELEPHONE")
private int telephone;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "Department_ID", nullable = false)
private Department department;
@Column(name = "DATA_OF_EMPLOYMENT")
@Temporal(TemporalType.DATE)
private Date dateofemployment;
public String getEmail() {
return email;
}
public int getTelephone() {
return telephone;
}
public void setEmail(String email) {
this.email = email;
}
public void setTelephone(int telephone) {
this.telephone = telephone;
}
public String getFirstname() {
return firstname;
}
public String getLastname() {
return lastname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Department getDepartment() {
return department;
}
public void setDepartment(Department department) {
this.department = department;
}
public Date getDataDodania() {
return dateofemployment;
}
public void setDataDodania(Date dateofemployment) {
this.dateofemployment = dateofemployment;
}
}
联系人控制器:
@Controller
public class ContactController {
@Autowired
private ContactWebservice contactWebservice;
@Autowired
private DepartmentWebservice departmentWebservice;
@Autowired
private ContactFormValidator contactFormvalidator;
@Autowired
private DepartmentEditor departmentEditor;
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(Department.class, this.departmentEditor);
}
int totalEditContacts = 0; //
List<Integer> editedContacts = new ArrayList<Integer>();
@RequestMapping(value="/showContacts", method=RequestMethod.GET)
public ModelAndView listContacts(HttpServletRequest request,
HttpServletResponse response ) throws ServletException, IOException{
ModelAndView mav = new ModelAndView("/contact/showContacts");
List searchResults = contactWebservice.listContact();
PagedListHolder pagedListHolder = new PagedListHolder(searchResults);
int page = ServletRequestUtils.getIntParameter(request, "p", 0);
pagedListHolder.setPage(page);
int pageSize = 2;
pagedListHolder.setPageSize(pageSize);
mav.addObject("contactListHolder", pagedListHolder);
mav.addObject("totalEditContacts", totalEditContacts);
return mav;
}
@控制器
公共类联系人控制器{
@自动连线
私人ContactWebservice ContactWebservice;
@自动连线
私人部门网络服务部门网络服务;
@自动连线
私人ContactFormValidator ContactFormValidator;
@自动连线
私人部门编辑部门编辑;
@InitBinder
公共绑定器(WebDataBinder绑定器){
binder.registerCustomEditor(Department.class,this.departmentEditor);
}
int totalEditContacts=0//
List editedContacts=new ArrayList();
@RequestMapping(value=“/showContacts”,method=RequestMethod.GET)
公共模型和查看列表联系人(HttpServletRequest,
HttpServletResponse)抛出ServletException,IOException{
ModelAndView mav=新ModelAndView(“/contact/showContacts”);
List searchResults=contactWebservice.listContact();
PagedListHolder PagedListHolder=新的PagedListHolder(搜索结果);
int page=ServletRequestUtils.getIntParameter(请求,“p”,0);
pagedListHolder.setPage(第页);
int pageSize=2;
设置页面大小(pageSize);
mav.addObject(“contactListHolder”,pagedListHolder);
mav.addObject(“totalEditContacts”,totalEditContacts);
返回mav;
}
showContacts.jsp
<%@include file="../header.jsp"%>
<%@include file="../menu.jsp"%>
<div id="main">
<input type="button" value="New Contact"
onclick="javascript:go('saveContact.do');" />
<br><br>
<!-- <c:if test="${empty contactListByFirstName}">
<h3>List Contact's are empty</h3>
</c:if> -->
<c:if test="${!empty contactListByFirstName}">
<h3>Contacts</h3>
<table class="tableshowall">
<tr>
<th>First name</th>
<th>Last name</th>
<th>Email</th>
<th>Telephone</th>
<th>Department</th>
<th>Date of employment</th>
<th> </th>
</tr>
<c:forEach items="${contactListByFirstName}" var="contact">
<tr>
<td>${contact.firstname}</td>
<td>${contact.lastname}</td>
<td>${contact.email}</td>
<td>${contact.telephone}</td>
<td>${contact.department.name}</td>
<td>${contact.dateofemployment}</td>
<%-- <td><a href="delete/${contact.id}.html">delete</a></td>--%>
<td> <a href="updateContact.do?id=${contact.id}">Edit</a>
<a
href="javascript:deleteContact('deleteContact.do?id=${contact.id}');">delete</a>
</td>
</tr>
</c:forEach>
</table>
<br />
</c:if>
<%@ taglib prefix="tg" tagdir="/WEB-INF/tags"%>
<c:if test="${!empty contactListHolder}">
<%-- // create link for pages, "~" will be replaced later on with the proper page number --%>
<c:url value="/showContacts.do" var="pagedLink">
<c:param name="action" value="list" />
<c:param name="p" value="~" />
</c:url>
<%-- // load our paging tag, pass pagedListHolder and the link --%>
<tg:paging pagedListHolder="${contactListHolder}"
pagedLink="${pagedLink}" />
<%-- // show only current page worth of data --%>
<table class="tableshowall">
<tr>
<th><spring:message code="contact.tableHeader.firstname" /></th>
<th>Last name</th>
<th>Email</th>
<th>Telephone</th>
<th>Department</th>
<th>Date of employment</th>
<th> </th>
</tr>
<c:forEach items="${contactListHolder.pageList}" var="contact">
<tr>
<td>${contact.firstname}</td>
<td>${contact.lastname}</td>
<td>${contact.email}</td>
<td>${contact.telephone}</td>
<td>${contact.department.name}</td>
<td>${contact.dateofemployment}</td>
<!-- <td><a href="delete/${contact.id}.html">delete</a></td>-->
<td> <a href="updateContact.do?id=${contact.id}">Edit</a>
<a
href="javascript:deleteContact('deleteContact.do?id=${contact.id}');">delete</a>
</td>
</tr>
</c:forEach>
</table>
<%-- // load our paging tag, pass pagedListHolder and the link --%>
<tg:paging pagedListHolder="${contactListHolder}"
pagedLink="${pagedLink}" />
<form action="searchContacts.do" method="post">
<table>
<tr>
<td>Enter Contact Name</td>
<td><input type="text" name="firstname" /></td>
<td><input type="submit" value="Search" /></td>
</tr>
</table>
</form>
total edit contacts: <c:out value="${totalEditContacts}" />
</c:if>
</div>
<%@ include file="../footer.jsp"%>
联络
名字
姓
电子邮件
电话
部门
受雇日期
${contact.firstname}
${contact.lastname}
${contact.email}
${联系电话}
${contact.department.name}
${contact.dateofemployment}
姓
电子邮件
电话
部门
受雇日期
${contact.firstname}
${contact.lastname}
${contact.email}
${联系电话}
${contact.department.name}
${contact.dateofemployment}
输入联系人姓名
编辑联系人总数:
联系人类的dateofemployment
属性的getter和setter方法与属性名称不匹配
将getter/setter方法更改为getDateofemployment
/setDateofemployment
(与JavaBeans兼容),或者将JSP更改为使用${contact.dataDodania}
还请注意,在Java中使用camelCase是最佳做法-因此
dateofemployment
可能应该是dateofemployment
(使用匹配的getter/setter方法)。Contact类的dateofemployment
属性的getter和setter方法与属性名称不匹配
将getter/setter方法更改为getDateofemployment
/setDateofemployment
(与JavaBeans兼容),或者将JSP更改为使用${contact.dataDodania}
还请注意,在Java中使用camelCase是最佳实践,因此就业日期应该是就业日期(使用匹配的getter/setter方法)。在jsp
中,(不要跳过它,阅读它)解决了这个问题
${contact.dateofemployment}
作为联系人。getDateofemployment()
,您没有。您有这个
public Date getDataDodania() {
return dateofemployment;
}
将其重命名为getDateofemployment
,它就会工作。或者,您可以使用EL表达式
${contact.dataDodania}
这同样适用于其他EL表达式
在你使用的东西上保持一定的一致性,特别是在语言方面。在jsp
中,(不要跳过它,阅读它)解决了这个问题
${contact.dateofemployment}
作为联系人。getDateofemployment()
,您没有。您有这个
public Date getDataDodania() {
return dateofemployment;
}
将其重命名为getDateofemployment
,它就会工作。或者,您可以使用EL表达式
${contact.dataDodania}
这同样适用于其他EL表达式
在你使用的东西上保持一定的一致性,特别是在语言方面