警告:JSF1074:托管bean名为' bean'已经注册

时间:2014-05-27 14:48:08

标签: jsf annotations managed-bean

我使用的是mojarra JSF 2.2。

我们定义的bean是基于anotation的例如。

@ManagedBean(name = "codeBean")
@ViewScoped
public class CodeRuleBean implements Serializable

我正在使用tomcat 7.0.53来部署它。但是,我收到一条警告说

  

警告:JSF1074:名为' codeBean'的托管bean已经注册。用com.myclass.rule.ui.CodeRuleBean替换现有托管bean类com.myclass.rule.ui.CodeRuleBean

faces-config.xml中没有。我只使用faces-config.xml来定义导航规则。

<?xml version="1.0" encoding="UTF-8"?>

<faces-config version="2.2" 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">


    <application>
        <navigation-handler>com.configurator.application.navigator.MyNavigator</navigation-handler>
    </application>

    <navigation-rule>
        <navigation-case>
            <from-outcome>codeRulePage</from-outcome>
            <to-view-id>/pages/rule/shortCodeMain.xhtml
            </to-view-id>
            <redirect />
            <to-flow-document-id />
        </navigation-case>
    </navigation-rule>

    <navigation-rule>
        <from-view-id>/pages/rule/shortCodeMain.xhtml</from-view-id>
        <navigation-case>
            <from-outcome>successPage</from-outcome>
            <to-view-id>/pages/rule/successCodeRule.xhtml
            </to-view-id>
        </navigation-case>
    </navigation-rule>
</<faces-config>

以下是web.xml,它不包含任何网络侦听器。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
    <display-name>MyWeb</display-name>

    <context-param>
        <description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>server</param-value>
    </context-param>
    <filter-mapping>
        <filter-name>cachePreventionFilter</filter-name>
        <url-pattern>*.xhtml</url-pattern>
        <url-pattern>*.jsf</url-pattern>
        <url-pattern>*.jsp</url-pattern>
        <dispatcher>REQUEST</dispatcher>
    </filter-mapping>
    <servlet>
        <servlet-name>FacesServlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>FacesServlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>FacesServlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>FacesServlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>
</web-app>

这是如何引起的?如何解决?

1 个答案:

答案 0 :(得分:10)

我认为你已经为jsf空间注册了多个监听器。看看这个。如果您的web.xml中有com.sun.faces.config.ConfigureListener,请将其删除。

因为com.sun.faces.config.FacesInitializercom.sun.faces.config.ConfigureListener方法上注册onStartup