Seam 2.2.2.Final および Richfaces 3.3.3.Final の使用。
ユーザーがタブを離れたときにアクションを実行する必要があります。このアクションは、すべてのページが読み込まれた後にのみ実行できます。各タブのコンテンツで Bean の初期化が行われます。だから私は行って読んだ。
問題は、たとえば 3 つのタブがある場合です。たとえば、各タブがレンダリングされ、次のタブのレンダリング パスが実行されると、コマンドが起動されます。ダメです。Bean が初期化されておらず、nullpointer が私を指しています!
とにかく、このタグでこの動作を防ぐには? 非常に大きなアプリの改善を行っているため、デプロイされたコードをできるだけ混乱させないようにしています。
ご覧いただきありがとうございます。これが私のページのコード例です:
<?xml version="1.0" encoding="ISO-8859-1"?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:s="http://jboss.com/products/seam/taglib"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:a="http://richfaces.org/a4j"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:rich="http://richfaces.ajax4jsf.org/rich"
template="/WEB-INF/xhtml/templates/frameTemplate.xhtml">
<ui:param name="pageTitle" value="Elaborar relatório, voto e ementa" />
<ui:define name="title">#{pageTitle}</ui:define>
<ui:param name="home" value="#{sessionProcess}" />
<ui:define name="frameBody">
<rich:jQuery query="hide()" selector="#update" timing="onload"/>
<s:div id="allTabs">
<rich:tabPanel title="Tab1" switchType="ajax" style="width: 100%;">
<rich:tab label="Report"
rendered="#{!sessionProcess.hideReport}"
title="Report" style="width: 100%;"
action="#{sessionProcess.setReport()}" immediate="true" ontableave="#{sessionProcess.writeDraftReport()}">
.
.
.
<rich:tabPanel title="Tab2" switchType="ajax" style="width: 100%;">
<rich:tab label="Vote"
rendered="#{!sessionProcess.hideVote}"
title="Report" style="width: 100%;"
action="#{sessionProcess.setVote()}" immediate="true" ontableave="#{sessionProcess.writeDraftVote()}">
.
.
.