我是JSF的新手并且遇到了问题。我希望有人可以帮助我。
问题:
FacesMessage
以在消息框中显示消息。FacesContext
返回null
,因此处理程序无法编写FacesMessage
。问题:
FacesMessage
以便它显示在UI上的最佳方法是什么?有关如何解决此问题的任何想法?
答案 0 :(得分:3)
如果您处于实际的faces会话中,FacesContext.getCurrentInstance()方法仅返回有效的faces上下文。我认为你应该做的是构建这个,这样你的TCP / IP消息处理类提供了一种方法,可以让faces托管bean获取有关前端消息的信息,然后从一个方法访问该方法。托管bean。
根据您正在使用的应用程序服务器类型,您可能希望将整个过程设置为通过EJB会话Bean进行交互。但实际上任何支持bean或面临的逻辑都应该与与UI无关的逻辑分开。
如果您正在使用符合JEE6的应用程序服务器(如Glassfish),您可以设置一个@Singleton EJB来保存一组消息(确保使用支持并发的数据结构)和类似JCA套接字的东西( http://code.google.com/p/jca-sockets/)来处理套接字通信。
答案 1 :(得分:1)
不,这是不可能的,替代方法是通过@ManagedBean
注释创建支持bean,或者在faces-config.xml中创建条目,如
<managed-bean>
<managed-bean-name>bean</managed-bean-name>
<managed-bean-class>com.test.bean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
现在您可以获得facesContext
并创建FacesMessage
两者,希望这会有所帮助。