Как вызвать конвертер в файл JSP в Spring Framework? - PullRequest
1 голос
/ 09 апреля 2011

Я новичок в Spring Framework, и мне удалось создать очень простую CMS, использующую постоянство данных Hibernate (я использую базу данных MySQL) для отображения статей на главной странице. Моя модель данных использует терминологию Drupalesque (например, «узел»), потому что я привык к этой CMS. ;)

Сейчас я борюсь с задачей преобразования метки времени 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
    }

}

Конфигурация диспетчера:

<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>

1 Ответ

1 голос
/ 09 апреля 2011

Почему вы не используете тип данных Date.Используя JSTL, вы можете легко реализовать ваш кейс без дополнительного конвертера, например

<fmt:formatDate pattern="yyyy-MM-dd hh:mm:ss" value="${node.time}" />
...