我有一个巨大的只读RESTFUL应用程序,内置在Spring MVC和Hibernate-Search中,它将一些数据封送到json和xml,供移动应用程序和监控应用程序使用。
我们的网址非常简单,我们有:
服务器:端口/实体/ ID /编组= JSON
或
服务器:端口/实体/ ID /编组= XML
有时候
服务器:端口/实体/ ID /编组=东西&安培; filterProp = entity.prop&安培;排序=降序
现在我需要使用JSF 2.1为此创建表示层并添加一些用户管理功能,我正在考虑这样的事情:
服务器:端口/实体/ ID /马歇尔= HTML
或完全省略马歇尔请求参数。
现在。据我所知,你只能连接JSF 2.1和Spring Web Flow,而不能直接连接Spring MVC。任何人都知道如何完成这项要求?
答案 0 :(得分:2)
Spring MVC和JSF都在单独的servlet上工作,这些servlet只能映射到不与另一个servlet冲突的上下文,所以这不能轻易完成,如果你成功那么它基本上就是一个巨大的黑客攻击。
如果我绝对不得不这样做(我不会),那么我可能会使用marshall servlet来克隆我的JSF请求,使用WebClient将该请求发送到我的FacesServlet ,然后将返回的WebClient响应复制到我的马歇尔servlet响应中并返回该响应。这对用户来说是透明的,但是非常混乱且可能不安全。
实现单独的基于Web的表示层的最佳方法是将表示层的请求映射到FacesServlet,以便不直接调用RESTFUL Web服务。
演员 - > /admin/page.jsf - > FacesServlet - > JSF视图 - > JSF控制器 - >业务逻辑层 - > RESTFUL Web服务
通过这种方式,您的RESTFUL Web服务可以返回XML或JSON数据并充当您的DAO,您的业务逻辑层可以在其上执行其他逻辑。