Rich:modalpanel向导行为不起作用

时间:2012-12-03 07:50:12

标签: java richfaces wizard

我在rich:modal面板中遇到了类似向导的行为问题。 我已经阅读了这些教程以及此http://maxkatz.sys-con.com/node/1428854/mobile和此http://www.mkyong.com/jsf2/jsf-form-action-navigation-rule-example/。但他们没有任何帮助。 我的代码如下:

面-配置:

    <!-- WizardProject -->
    <navigation-rule>
    <from-view-id>/widgets/wizard/ProjectStep.xhtml</from-view-id>
    <navigation-case>
        <from-action>#{projectWizard.goNext}</from-action>
        <from-outcome>SUCCESS</from-outcome>
        <to-view-id>/widgets/wizard/InfoStep.xhtml</to-view-id>
    </navigation-case>
    <navigation-case>
        <from-action>#{projectWizard.goNext}</from-action>
        <from-outcome>FAIL</from-outcome>
        <to-view-id>/widgets/wizard/InfoStep.xhtml</to-view-id>
    </navigation-case>
</navigation-rule>

我的Richpanel:

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

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:c="http://java.sun.com/jstl/core"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:a4j="http://richfaces.org/a4j"
  xmlns:rich="http://richfaces.org/rich">

<!-- 
    Parameters:
        id - modal dialog id
        bean 
        src - firstWizardPage
 -->

 <rich:modalPanel id="#{id}" width="750" resizeable="false" autosized="true">

      <f:facet name="header">
        <h:panelGroup>
                <h:outputText  value="Wizard"/>
        </h:panelGroup>
      </f:facet>
      <h:form>
        <h:panelGroup id="test">
            <a4j:include id="wizardPage" viewId="#{src}"/>
        </h:panelGroup>
      </h:form>
    </rich:modalPanel>
</ui:composition>

模态面板正确获取参数。第一页打开,之后调用bean。

这是第一页 - ProjectStep.xhtml

<h:panelGroup xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:a4j="http://richfaces.org/a4j" 
    xmlns:rich="http://richfaces.org/rich"
    xmlns:c="http://java.sun.com/jstl/core">


        <h:outputText value="I've opened up #{bean}" />
        <h:inputText value=" " />
        <div class="actionButtons">
        <div class="actionCancelButtons">
          <a4j:commandButton id="btnNext" 
                             value="Next" 
                             action="#{bean.goNext()}"
                             style="display:#{bean.isCanGoNext() ? '' : 'none'}"
                             reRender="test"/>

            <a4j:region>
            <a4j:commandButton  onclick="#{rich:component(id)}.hide()" 
                                value="Cancel" 
                                style="display:#{bean.isCanCancel() ? '' : 'none'}"/>
            </a4j:region>
        </div>
        </div>




</h:panelGroup>

我尝试使用ui:composition而不是h:panelGroup。它没用。第二页以同样的方式实现。

当我点击Next时,我的bean返回SUCCESS消息,但页面不会被更改。

请,任何人都知道出了什么问题?

1 个答案:

答案 0 :(得分:0)

<redirect/>属性添加到faces_config.xml,并可能尝试ajaxRendered="true"上的<a4j:include/>绝对确保您的导航案例正在被调用。 faces_config应该看起来像

 <navigation-rule>
    <from-view-id>/widgets/wizard/ProjectStep.xhtml</from-view-id>
    <navigation-case>
        <from-action>#{projectWizard.goNext}</from-action>
        <from-outcome>SUCCESS</from-outcome>
        <to-view-id>/widgets/wizard/InfoStep.xhtml</to-view-id>
        <redirect/>
    </navigation-case>
    <navigation-case>
        <from-action>#{projectWizard.goNext}</from-action>
        <from-outcome>FAIL</from-outcome>
        <to-view-id>/widgets/wizard/InfoStep.xhtml</to-view-id>
        <redirect/>
    </navigation-case>
</navigation-rule>