1

ポップアップを開く編集ボタンを含む通常のデータテーブルがあります。

 <h:form id="creditcard_configuration_form">
  <rich:dataTable id="test" width="100%"
    value="#{creditcardConfigurationService.cardsList}"
    iterationStatusVar="it" var="card">
    <rich:column>
      <a4j:commandLink execute="@this" ajaxSingle="true"
        oncomplete="#{rich:component('test123')}.show()">
        <h:graphicImage value="../../resources/images/edit.gif"
          alt="edit" />
        <a4j:param value="#{it.index}"
          assignTo="#{creditcardConfigurationAction.currentIndex}" />
      </a4j:commandLink>
    </rich:column>
  </rich:dataTable>

  <rich:popupPanel id="test123"
    header="#{creditcardConfigurationAction.currentIndex}"
    onmaskclick="#{rich:component('test123')}.hide()">
        asdf
  </rich:popupPanel>
</h:form>

ポップアップを開く前に、Bean にインデックス変数を設定しました。ただし、JSF は、ポップアップを開くときに getter メソッドを呼び出してindexofを取得することはありa4j:paramません (少なくとも、今はそうではありません)。ページがレンダリングされるときにゲッターメソッドが呼び出されることがわかりましたが、その後は呼び出されません。(つまり、ポップアップの場合、インデックスは常に 0 に見えます)。

インデックス var を含む Bean はビュー スコープであり、サービス Bean はセッション スコープです。RichFaces (4.3.2 Final) と JSF 2.0.6 の最新バージョンを使用しています。

4

1 に答える 1

0

あなたの質問は少し紛らわしいので、私はあなたの問題の解決策として予測している両方の解決策を証明しています.

回答 1 :
最初に、リッチフェイス ショー ケースのこのリンクを
参照 して、そのコードをデモで参照してください。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:a4j="http://richfaces.org/a4j"
    xmlns:rich="http://richfaces.org/rich">
    <h:form>
        <rich:panel>
            <h:panelGrid columns="2">
                <a4j:commandButton value="Set Name to Alex" render="rep">
                    <a4j:param value="Alex" assignTo="#{userBean.name}" />
                </a4j:commandButton>

                <a4j:commandButton value="Set Name to John" render="rep">
                    <a4j:param value="John" assignTo="#{userBean.name}" />
                </a4j:commandButton>
            </h:panelGrid>
        </rich:panel>
        <br />
        <rich:panel>
            <h:outputText id="rep" value="Selected Name:#{userBean.name}" />
        </rich:panel>
    </h:form>
</ui:composition>

render変数の getter セッターが呼び出される任意のコンポーネント (ここでは を使用rep)が必要であることがわかるようにname(要求スコープで設定されたパラメーター値を送信するページでは、getter-setter を呼び出さず、ページの読み込み時に getter のみを呼び出します)。

2:最初に、データがDB からのすべての Param データ
と同じではないことを確認します。 また、もう1つの予測、例に示すようにwithを変更して、もう一度試してください。うまくいくかもしれません。0outputtextbutton#{it.index}param
commandLinkcommandButton

于 2013-06-26T11:42:06.770 に答える