集成Spring MVC和JSF 2.1
问题内容:
我有一个用Spring MVC和Hibernate-
Search构建的巨大的只读RESTFUL应用程序,该应用程序将一些数据编组到json和xml中,供移动应用程序和监视应用程序使用。
我们的网址非常简单,我们拥有以下功能:
服务器:端口/实体/ ID /?marshalling = json
要么
服务器:端口/实体/ ID /?marshalling = xml
而有时
服务器:端口/实体/id/?marshalling=something&filterProp=entity.prop&ordering=desc
现在,我需要使用JSF 2.1为此做一个表示层,并添加一些用户管理功能,我在想这样的事情:
服务器:端口/实体/ ID /?marshall = html
或完全省略marshall request参数。
现在。据我所知,您只能将JSF 2.1和Spring Web Flow结合起来,不能直接结合Spring MVC。有人知道我该如何满足这一要求?
问题答案:
Spring
MVC和JSF都在单独的servlet上工作,这些servlet只能映射到与另一个servlet不冲突的上下文,因此这不能轻易实现,如果成功,那么这基本上是一个巨大的麻烦。
如果我绝对必须这样做 (我不 会这样做 ) ,那么我可能会使用marshall
servlet克隆我的JSF请求,使用WebClient将该请求发送到FacesServlet,然后将返回的WebClient响应复制到我的编组servlet响应并返回。这对于用户是透明的,但是高度混乱并且可能不安全。
实现基于Web的单独表示层的最佳方法是将对表示层的请求映射到FacesServlet,这样就不会直接调用RESTFUL Web服务。
Actor-> /admin/page.jsf-> FacesServlet-> JSF View-> JSF Controller->业务逻辑层->
RESTFUL Web服务
这样,您的RESTFUL Web服务可以返回XML或JSON数据并充当DAO,您的业务逻辑层可以对此执行其他逻辑。