Eclipse 从其他项目中引用ManageBean
我使用谷歌应用引擎1.9.51。在Eclipse中,我为多服务创建了4个项目: -一只耳朵(进球完成) -一个普通jave项目(目标完成情况) -2个Web应用程序(GoalsCompletion\u默认和GoalsComletion\u任务),如下面的屏幕截图所示 在web应用程序中(如GoalsCompletion_default), -我很少有jsf文件引用公共项目中定义的ManageBean(即GoalsCompletion\u common)。 -我也有jave文件引用公共项目中定义的接口 我将公共项目作为web应用程序部署的依赖项,如下所示: 我面临的问题是在web应用程序中,当我调用公共项目中定义的ManageBean的getter时,什么都没有返回 比如说 在web.xml中Eclipse 从其他项目中引用ManageBean,eclipse,google-app-engine,jsf,Eclipse,Google App Engine,Jsf,我使用谷歌应用引擎1.9.51。在Eclipse中,我为多服务创建了4个项目: -一只耳朵(进球完成) -一个普通jave项目(目标完成情况) -2个Web应用程序(GoalsCompletion\u默认和GoalsComletion\u任务),如下面的屏幕截图所示 在web应用程序中(如GoalsCompletion_default), -我很少有jsf文件引用公共项目中定义的ManageBean(即GoalsCompletion\u common)。 -我也有jave文件引用公共项目中定义
<context-param>
<param-name>primefaces.THEME</param-name>
<param-value>#{userSession.theme}</param-value>
如果我将UserSessionManageBean从公共项目移动到web应用程序,则返回值
GAE并没有抱怨找不到类,并没有错误,只是返回空值,所以在我的部署配置中似乎有问题。有什么帮助吗?感谢OTM对上述帖子的建议 是的,一个简单的解决方案就是在faces-config.xml中定义托管bean,并将其放在公共项目的\META-INF下 faces-config.xml的示例:
<?xml version="1.0"?>
<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
version="2.2">
<managed-bean>
<managed-bean-name>beanName</managed-bean-name>
<managed-bean-class>package.BeanName</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
豆名
包装.豆名
一场
几次尝试后出错
实际上,在web应用程序项目中,若将公共项目作为其web部署程序集的依赖项包含,则不需要在公共项目/web-INF文件夹中包含faces-config.xml
在本例中,我可以使用注释而不是xml来配置bean
这一点不起作用的原因是,每次我对公共项目的pom.xml进行更改(例如包括新的依赖项或更改依赖项版本)时,Eclipse都会删除我的设置Web部署程序集
因此,在部署/运行服务器之前,我只需要确保公共项目存在于其他web项目的web部署程序集中。如果没有,我需要再次添加
不确定的是,使设置永久性的一种解决方法是在每个web应用程序中,将公共项目中的管理bean添加到faces-config.xml中。而且它起作用了。因此,web应用程序似乎不会扫描从其他项目生成的jar文件。不确定这是唯一的解决方案还是有更好的方法…阅读“web片段”…您可以使用
EJB
-s在其他应用程序中访问托管bean。或者JAX-RS
。GAE不支持J2EE。那个公共项目只是一个java项目,其中的代码我计划被其他2个web应用程序重用。这就是为什么它被打包为jar文件并包含在其他web应用程序项目中。因此,无论我的应用服务器是不是GAE,都无法与EJB-s或JAX-RS共享,因为它不是一个普通的web应用程序。请看,使用xml配置bean是非常早的历史。使用注释更为现代,当您使用JSF2.2时,甚至建议开始使用CDI而不是jsf管理的BeanshiMate。。。是的,我用的是2.2.10。我可以知道你使用CDI的意思吗?有一个叫做谷歌的东西。。。但使用stackoverflow搜索将有助于解决问题。还有
<?xml version="1.0"?>
<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
version="2.2">
<managed-bean>
<managed-bean-name>beanName</managed-bean-name>
<managed-bean-class>package.BeanName</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>