Opencms Spring集成

时间:2013-01-29 05:46:06

标签: opencms

任何人都可以帮助我如何将OpenCMS与Java Spring Web应用程序集成。已经谷歌搜索并通过很多网站但没有用。所以,请帮助我。

2 个答案:

答案 0 :(得分:3)

我认为将SpringMVC与OpenCMS集成有两种方法:

1)两个独立的应用程序,一个SpringMVC应用程序和一个标准的OpenCMS安装。 SpringMVC应用程序通过OpenCMS中实现的Web服务从OpenCMS中获取内容。可以在这里找到更多细节:http://lists.opencms.org/pipermail/opencms-dev/2012q3/037154.html。如果您要启动新项目或扩展现有SpringMVC站点以添加内容管理,则此方法很有用。它允许SpringMVC和内容管理之间的清晰分离。

2)将SpringMVC与标准OpenCMS安装集成。这意味着在部署opencms.war之后,将修改web.xml以添加SpringMVC调度程序servlet和自定义视图解析程序。控制器是SpringMVC,视图是OpenCMS资源。如果您已经拥有现有的OpenCMS站点并希望扩展站点以具有MVC功能,则此方法很有用。有关此方法的详细说明,请查看http://blog.shinetech.com/2013/04/09/integrating-springmvc-with-opencms/

答案 1 :(得分:0)

向Spring应用程序添加REST-API,并直接通过该API从OpenCms jsps获取数据。

这里有一个如何使用Jackson获取数据以将JSON转换为Objects的示例:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" session="true"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="cms" uri="http://www.opencms.org/taglib/cms" %>
<%@ page import="org.codehaus.jackson.map.ObjectMapper" %>
<%@ page import="org.codehaus.jackson.type.TypeReference" %>
<%@ page import="java.util.*, java.net.*" %>
<%

ObjectMapper mapper = new ObjectMapper();

List<Map<String, Object>> result = mapper.readValue(new URL("https://server/api/rest/employeesOrderedByDepartment"), new TypeReference<List<Map<String, Object>>>() {} );

pageContext.setAttribute("result", result);

%>

<div class="span10">
    <table class="table table-striped">
        <thead>
            <tr>
                <th>Name</th>
                <th>Department</th>
                <th>Function</th>
                <th>Phone & Email</th>
            </tr>
        </thead>
        <tbody id="staffbody">
        <c:forEach items="${result}" var="person" varStatus="status">
            <tr>
                <td>${person.lastName}&nbsp;${person.firstName}</td>
                <td>${person.department.name}</td>
                <td>${person.function}</td>
                <td>${person.phone}<br /><a href='mailto:${person.email}'>${person.email}</a></td>
            </tr>
        </c:forEach>
        </tbody>
    </table>
</div>