0

JSF 1.2 + Richfaces 3.3 について質問があります。いくつかのナビゲーション ルールといくつかの ajax 関数を備えた Web アプリがあります。ある時点で、サーバー側でアクションを実行した後、アプリケーションがブラウザーで新しいタブを開き、xhtml ページを表示するようにしたいと考えています。そのためのタグを選択しました。それがどのように見えるかです:

<h:commandLink target="_blank"
                action="#{sm_gestiondocumental_gestorUserAuditBean.actionCreateUserAuditManager}">
                <h:graphicImage value="/images/sm_gestiondocumental/checklist.png"
                    alt="#{wmsg.VIEW_AUDITS}" title="#{wmsg.VIEW_AUDITS}"
                    styleClass="pic" />
            </h:commandLink>

実行中のコードは次のとおりです。

private String createAuditManager(String className, String param, Object objectToAudit,
        String auditFileName) {
    AuditManagerBean amb = (AuditManagerBean) FacesUtils
            .getManagedBean(BeanNames.AUDIT_MANAGER_BEAN);
    if (amb == null) {
        amb = new AuditManagerBean();
    }
    try {
        amb.set_serviceLocator(this.get_serviceLocator());
    } catch (Exception e) {
        e.printStackTrace();
    }
    amb.set_AuditClassName(className);

    amb.set_AuditId(param);
    amb.set_AuditList(null);
    amb.set_AuditFileName(auditFileName);
    amb.set_ObjectToAudit(objectToAudit);

    amb.set_AuditFilterInit(this._FilterInit);
    amb.set_AuditFilterEnd(this._FilterEnd);
    FacesUtils.setManagedBeanInSession(BeanNames.AUDIT_MANAGER_BEAN, amb);
    return "showAudits";
}

public String actionCreateUserAuditManager() {
    if (this._SelectedUser == null) {
        FacesUtils.addErrorMessage("Error al listar usuarios");
        return this.createAuditManager(CUsuarioRegistrado.NAME_FOR_AUDIT, "", null,
                "Auditoría para " + this._SelectedUser);
    }
    return this.createAuditManager(CUsuarioRegistrado.NAME_FOR_AUDIT,
            this._SelectedUser.toString(), null, "Auditoría para " + this._SelectedUser);
}

「showAudits」文字列を返しています。私のナビゲーション ルールによれば、この文字列は次のリンクを開く必要があります: auditInfo.xhtml。

<navigation-rule>
    <from-view-id>*</from-view-id>
    <navigation-case>
        <description></description>
        <from-outcome>sm_gestiondocumental_ListGrupoEntrega</from-outcome>
        <to-view-id>/modules/sm_gestiondocumental/ges_tiposentrega/tiposGrupoList.xhtml</to-view-id>
    </navigation-case>
    <navigation-case>
        <description></description>
        <from-outcome>sm_gestiondocumental_ListEmpresa</from-outcome>
        <to-view-id>/modules/sm_gestiondocumental/ges_empresas/empresasList.xhtml</to-view-id>
    </navigation-case>
    <navigation-case>
        <description></description>
        <from-outcome>sm_gestiondocumental_ListTrabajo</from-outcome>
        <to-view-id>/modules/sm_gestiondocumental/ges_trabajos/trabajosList.xhtml</to-view-id>
    </navigation-case>
    <navigation-case>
        <description></description>
        <from-outcome>sm_gestiondocumental_ListSeccion</from-outcome>
        <to-view-id>/modules/sm_gestiondocumental/ges_secciones/seccionesList.xhtml</to-view-id>
    </navigation-case>
    <navigation-case>
        <description>
        </description>
        <from-outcome>showAudits</from-outcome>
        <to-view-id>/modules/sm_gestiondocumental/auditInfo/auditInfo.xhtml</to-view-id>
    </navigation-case>
</navigation-rule>

ルールは適切に適用されていますが、アプリケーションのメイン パネルでページが開いています。つまり、新しいブラウザ タブが開いていますが、アプリケーション全体が内部の auditInfo.xhtml コンテンツとともに表示されています。 auditInfo.xhtml ページ。

org.ajax4jsf.Filter が呼び出された後にアプリケーション Bean の setContent() メソッドが呼び出されるため、フィルタリングの問題のようです。ただし、そのメソッドを呼び出したくありません。何か案は?

4

1 に答える 1

0

解決しました。タグは a4j:outputPanel 内にあったため、自動的に ajaxRender に設定されなくても、richfaces はそのリクエストに対して ajax フィルターを使用していました。そのフィルターがこの問題を引き起こしていました。ah:panelGroup の a4j:outputPanel を変更すると解決しました。

于 2012-07-13T12:52:00.393 に答える