我使用JSF有一个奇怪的行为:我用@Managedbean注释的类在视图中不可见/不可用,我不能通过EL调用它们。
然后我创建了一个faces-config.xml文件并显式声明了托管bean,这样就可以调用它们。
他们没有被发现的问题是什么?
这是我的相关代码:
web.xml:
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
托管Bean:
import javax.faces.bean.ManagedBean;
@ManagedBean
public class LanguagesCountryLocaleController {
public String sayHello(){
return "Just to make it short!";
}
}
faces-config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<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>languagesCountryLocaleController</managed-bean-name>
<managed-bean-class>com.fry.starter.commands.manager.content.LanguagesCountryLocaleController</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
</faces-config>
和xhtml文件中的调用:
#{languagesCountryLocaleController.sayHello()}
感谢您的帮助!