0

richfaces (3.3.2) モーダル パネルで予期しない問題が発生しました。ブラウザを開こうとすると、1 つではなく 2 つのパネルが開きます。1 つは中央に、もう 1 つは左上隅にあります。また、色褪せもありません。また、表示、編集、新規の3つのモードがあります。パネルを開くと、ヘッダーに「新規作成...」または「編集...」が表示され、実際には表示されますが、ヘッダーには表示されません。このモーダルパネルを開く前に適切なモードを設定しているため、後者はまったくレンダリングされません。その上、私が作成した他のすべてのページで問題なく動作し、アプリケーションにはそのようなページが数十あります。ここで何が問題なのか理解できません。それを修正する唯一の方法は、非常に奇妙なページから <a4j:keepAlive/> を削除することです。

私のアプリケーションのどこでも問題なく動作するため、コードがここで役立つかどうかはわかりませんが、この場合のみです。したがって、自分のページに配置すると、おそらく問題なく動作します。私の唯一の質問は、これら 2 つの要素 (<rich:modalPanel> と <a4j:keepAlive>) の相互作用に隠れた、またはまれな問題はありますか? それとも、コード内の間違ったコンマ、括弧、または何かを検索するために、さらに 2、3 日を費やす必要がありますか? :)

最も好奇心旺盛な人向け。パネル自体:

<!-- there's no outer form -->
    <rich:modalPanel id="panel" autosized="true" minWidth="300" minHeight="200">
        <f:facet name="header">
            <h:panelGroup id="panelHeader">
            <h:outputText value="#{msg.new_smth}" rendered="#{MbSmth.newMode}"/>
            <h:outputText value="#{msg.edit_smth}" rendered="#{MbSmth.editMode}"/>
            </h:panelGroup>
        </f:facet>
        <h:panelGroup id="panelDiv">
            <h:form >
                <!-- fields and buttons -->
            </h:form>
        </h:panelGroup>
    </rich:modalPanel>

パネルを開くボタンの 1 つ:

<a4j:commandButton id="addBtn"
            reRender="panelHeader, panelDiv"
            value="#{form.add}"
        oncomplete="#{rich:component('panel')}.show()"
            action="#{MbSmth.add}"
            image="create.gif"/>

ボタンのクリックで呼び出されるアクション:

public void add() {
    curMode = NEW_MODE; // initial mode is VIEW_MODE
    newSmth = new Smth();
}

モードチェック:

public boolean isNewMode() {
    return curMode == NEW_MODE;
}

public boolean isEditMode() {
    return curMode == EDIT_MODE;
}
4

2 に答える 2

0

domElementAttachment="parent" パラメータを rich:modalPanel に追加すると、エディタが正常に動作します。

于 2013-08-26T16:58:05.147 に答える
0

modalPanel は常に存在しますが、非表示になっていることに注意してください。キープアライブは常にこれを示していると思います。

于 2010-05-25T13:56:19.480 に答える