ICEfacesでbeforePhaseが動作しない?

JSF1.2からのようにPageごとに割り込みメソッドを指定できるらしいです。
Chapter 11 Using JavaServer Faces Technology in JSP Pages
Visual Webを使いたくない(使えない)場合に便利そうな機能だと思いましたが、ICEFacesと合わせると動かないんですよね。同じように悩んでいる人を発見するも、解決策を見つけることはできませんでした。
ICEfacesでbeforePhaseが動作しない?

試したコードはこんな感じです。

    <f:view beforePhase="#{Page1.hoge}">

    public void hoge(PhaseEvent pe){

    }

すると、以下のエラーが吐かれます。

java.lang.IllegalArgumentException: argument type mismatch
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.commons.beanutils.PropertyUtils.setSimpleProperty(PropertyUtils.java:1789)
        at org.apache.commons.beanutils.PropertyUtils.setNestedProperty(PropertyUtils.java:1684)
        at org.apache.commons.beanutils.PropertyUtils.setProperty(PropertyUtils.java:1713)
        at org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:1019)
        at org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:808)
        at com.icesoft.faces.webapp.parser.ELSetPropertiesRule.begin(ELSetPropertiesRule.java:130)
        at org.apache.commons.digester.Rule.begin(Rule.java:200)
        at org.apache.commons.digester.Digester.startElement(Digester.java:1273)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:400)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2747)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
        at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
        at org.apache.commons.digester.Digester.parse(Digester.java:1586)
        at com.icesoft.faces.webapp.parser.Parser.parse(Parser.java:130)
        at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:464)
        at com.icesoft.faces.application.D2DViewHandler.renderView(D2DViewHandler.java:153)
        at org.icefaces.netbeans.rave.web.ui.appbase.faces.ViewHandlerImpl.renderView(ViewHandlerImpl.java:296)
        at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
        at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
        at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
        at com.icesoft.faces.webapp.http.core.JsfLifecycleExecutor.apply(JsfLifecycleExecutor.java:17)
        at com.icesoft.faces.context.View$2$1.respond(View.java:47)
        at com.icesoft.faces.webapp.http.servlet.GlassFishAdaptingServlet$GlassFishRequestResponse.respondWith(GlassFishAdaptingServlet.java:159)
        at com.icesoft.faces.context.View$2.serve(View.java:72)
        at com.icesoft.faces.context.View.servePage(View.java:133)
        at com.icesoft.faces.webapp.http.core.SingleViewServer.service(SingleViewServer.java:52)
        at com.icesoft.faces.webapp.http.common.ServerProxy.service(ServerProxy.java:11)
        at com.icesoft.faces.webapp.http.servlet.MainSessionBoundServlet$4.service(MainSessionBoundServlet.java:114)
        at com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer.service(PathDispatcherServer.java:24)
        at com.icesoft.faces.webapp.http.servlet.MainSessionBoundServlet.service(MainSessionBoundServlet.java:160)
        at com.icesoft.faces.webapp.http.servlet.SessionDispatcher$1.service(SessionDispatcher.java:42)
        at com.icesoft.faces.webapp.http.servlet.GlassFishAdaptingServlet.service(GlassFishAdaptingServlet.java:60)
        at com.icesoft.faces.webapp.http.servlet.EnvironmentAdaptingServlet.service(EnvironmentAdaptingServlet.java:63)
        at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:62)
        at com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
        at com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:153)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
        at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:411)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:290)
        at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:271)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:202)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
        at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
        at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:272)
        at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:637)
        at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:568)
        at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:813)
        at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
        at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)
        at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)
        at com.sun.enterprise.web.portunif.PortUnificationPipeline$PUTask.doTask(PortUnificationPipeline.java:380)
        at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
        at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)

GlassFishだとあまり情報がありませんが、Tomcatだともうちょっと情報があり、MethodのところにValueを突っ込んでるみたいなエラーが書かれています。
何となく、com.icesoft.faces.webapp.parser.ELSetPropertiesRule.beginがイヤな感じなので、中を見てみます。

    public void begin(Attributes attributes) throws Exception {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        HashMap values = new HashMap();
        Object top = digester.peek();

        for (int i = 0; i < attributes.getLength(); i++) {
            String name = attributes.getLocalName(i);
            if ("".equals(name)) {
                name = attributes.getQName(i);
            }
            String value = attributes.getValue(i);

            //take a guess at the types of the JSF 1.2 tag members
            //we are probably better off doing this reflectively
            if (name != null) {
                values.put(name, value);
                if (("id".equals(name)) ||
                    ("name".equals(name)) ||
                    ("var".equals(name))) {
                    values.put(name, value);
                } else if (top instanceof UIComponentTag) {
                    //must be a JSF 1.1 tag
                    values.put(name, value);
                } else if ("action".equals(name)) {
                    values.put(name,
                               getMethodExpression( facesContext, name, value,
                                                    null ));
                } else if ("validator".equals(name)) {
                    values.put(name, 
                            getMethodExpression( facesContext, name, value,
                                    null ));
                } else if ("actionListener".equals(name)) {
                    values.put(name,
                               getMethodExpression(facesContext, name, value,
                                                   ActionEvent.class));
                } else if ("valueChangeListener".equals(name)) {
                    values.put(name,
                               getMethodExpression(facesContext, name, value,
                                                   ValueChangeEvent.class));
                } else {
                    values.put(name,
                               getValueExpression(facesContext, name, value));
                }
                if (top instanceof javax.faces.webapp.UIComponentELTag) {
                    //special case for 
                    //com.sun.faces.taglib.jsf_core.ParameterTag
                    //and potentially others
                    if ("name".equals(name))  {
                        values.put(name,
                                   getValueExpression(facesContext, name, value));
                    } else if ("locale".equals(name)) {
                        values.put(name,
                                   getValueExpression(facesContext, name, value));
                    } 
                } else {
                    //reflection based code as mentioned above.  More likely
                    //to be correct, but performance may not be as good,
                    //so only applying it in a specific case
                    if ("name".equals(name))  {
                        Method setNameMethod = null;
                        try {
                            setNameMethod = top.getClass().getMethod("setName",
                                                                     new Class[] { ValueExpression.class } );
                        } catch (Exception e)  { }
                        if (null != setNameMethod)  {
                            values.put(name,
                                       getValueExpression(facesContext, name, value));
                        }
                    }

                }

            }
        }


        BeanUtils.populate(top, values);
    }

beforePhaseにはメソッドを指定するはずなのですが、このコードからはbeforePhaseの場合にはvalueが渡されているような雰囲気です。これが原因かどうかはもっと突っ込まないとわからないようです。ちょっと手に負えませんね。
beforePhaseを使えばすぐわかるような現象だとは思うのですが、使っている人が少ないのでしょうか?