3

谁能帮助我如何将 OpenCMS 与 Java Spring Web 应用程序集成。已经用谷歌搜索并浏览了很多网站,但没有用。所以,请帮助我。

4

2 回答 2

4

我认为将 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/

于 2013-04-17T00:41:45.830 回答
0

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

这是一个如何使用 Jackson 获取数据以将 JSON 转换为对象的示例:

<%@ 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>
于 2013-08-12T06:31:18.033 回答