我正在开发一个使用基于 SOAP 的 Web 服务的 JSF 2.0 应用程序。
我想在 JSF 页面中使用为 Web 服务生成的大部分客户端类 - 但客户端类不是托管 bean(也不是 CDI bean)......而且我不认为有很多客户端类可以向所有类添加@ManagedBean
或@Named
注释...
让我举个例子,这样事情可能会更清楚一点:
User 类是一个生成的客户端类——这个类只有两个属性(登录名和密码)。
我希望能够为 JSF 页面中给定用户的属性分配值:
<h:inputText value="#{user.name}"/>
<h:inputText value="#{user.password}"/>
然后我想打电话给我UserService
来验证用户:
<h:commandButton value="Login" action="#{userService.authenticate}"/>
从 JSF 页面为 User 对象分配值的唯一方法(AFAIK)是将 User 对象设为托管 bean(或 CDI bean)。
由于有超过 100 个客户端类,我绝对不想在所有类上添加@ManagedBean
或@Named
注释(我同样不想在 faces-config.xml 中为每个类添加 message-bean 元素)。
即使注释所有类是一个可行的选项,该解决方案也会有一个缺点:服务合同 (WSDL) 可能随时更改,我将有义务重新生成客户端类......我会放弃带注释的类。
处理这种(类型)问题的最佳方法是什么?
我一直在寻找一种方法来在 faces-config.xml(下面的示例)中声明一个包的所有类,但我既找不到这样做的方法,也找不到可行的替代方案。
<managed-beans>
<managed-beans-package>x.y.z.ws.client</managed-beans-package>
<managed-beans-scope>none</managed-beans-scope>
</managed-beans>