1
我是Spring Framework newbe,我设法做出了一个非常简单的CMS,使用Hibernate数据持久性(我使用mySQL数据库)在FrontPage上显示文章。我的数据模型使用了一些Drupalesque术语(如“节点”),因为我习惯于该CMS。 ;)如何在Spring框架中调用JSP文件中的转换器?
现在我努力完成将存储在数据库中的UNIX时间戳转换为ISO日期格式的任务。我决定写我自己的转换器来完成这项任务。
我做了我的家庭作业,并阅读了Spring参考指南,搜索教程等,但似乎转换器主要是用于转换来自GET参数和POST查询的数据的工具。那么把控制器绑定到Model中的对象的字段转换成什么呢?我在研究过程中错过了什么?
的JSP代码(frontpage.jsp)部分:
<div id="content-wrapper">
<div id="center-column">
<c:forEach items="${NodeCollection}" var="node">
<div class="node">
<h3>${node.title}</h3>
<span class="pub_time">${node.timestamp}</span>
<div class="content">${node.teaser}</div>
</div>
</c:forEach>
</div>
我的控制器:
@Controller
public class FrontpageController {
private NodeRevisionsDAOImpl nodeRevisionsDAO;
@Autowired
void setnodeRevisionsDAO(NodeRevisionsDAOImpl myNodeRevisionsDAOImpl) {
this.nodeRevisionsDAO = myNodeRevisionsDAOImpl;
}
@RequestMapping (value = "/index.htm", method = RequestMethod.GET)
ModelAndView getMainPage(ModelAndView mav) {
ModelMap modelMap = new ModelMap();
Collection nodes = nodeRevisionsDAO.listNodeRevisions(5);
modelMap.addAttribute("NodeCollection", nodes);
mav.setViewName("frontpage");
mav.addAllObjects(modelMap);
return mav;
}
}
我的虚拟转换器(我会添加实施后):
package converters;
import org.springframework.core.convert.converter.Converter;
public class TimestampToDateConverter implements Converter<Long, String> {
public String convert(Long s) {
return "0000-00-00 00:00:00"; //Dummy code
}
}
Dispacher的配置:
<mvc:annotation-driven conversion-service="conversionService" />
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="converters.TimestampToDateConverter"/>
</list>
</property>
</bean>
感谢的答案,但它仍然不顺利。我在我的Hibernate bean中为“时间戳”(长数据类型)字段设置了这种类型的转换: public Date getTimestamp(){ Date date = new Date(); date.setTime(timestamp.longValue()); 返回日期; } 在呈现的html中,我得到像1970-01-16 02:41:33这样的日期,它看起来不会传输适当的值...但是,Hibernate bean中的时间戳是正确的。 – DoktorNo 2011-04-09 14:31:31
表中该列的类型是什么? – 2011-04-09 14:42:35
我使用BIGINT(20)来存储时间戳。我在getter中为时间戳做了一个简单的System.out输出,并且它是正确的。日期值也是正确的。 – DoktorNo 2011-04-09 15:41:18