1

ウィザードコンポーネントを使用することにしました。このコンポーネントのリンク

「スキップして最後まで」チェックボックスの代わりにボタンを使用する必要があるという条件があります。このボタンを押すと大丈夫ですが、ペナルトタブに移動すると確認タブのコンテンツを生成したいのですが、

public void generatePreview() {

        for (CompetitionTypeBean competitionType : competitionTypeList) {
            if (competitionType.getId().equals(competitionTypeId)) {
                tournamentBean.setCompetitionTypeBean(competitionType);
            }
        }
 if (teamList != null && !teamList.isEmpty()) {
            List<TeamBean> teams = new ArrayList<TeamBean>();
            for (TeamBean team : teamList) {
                for (Long teamId : teamListSelected)
                    if (team.getId().equals(teamId)) {
                        teams.add(team);
                        break;
                    }
            }
            tournamentBean.setTeams(teams);
        }
    }

それは私がskip in trueそのために設定する必要があることを意味します私はjs関数を書くことにしましたwill work on onnext event of wizard

<script type="text/javascript">
        function setHiddenValue(formId, componentId, new_value) {

            var tabId = 'competitionId';
            if (tabId != 'predLast') {
                document.getElementsByName('wiz').next();
            } else {
                var fullComponentId = formId + ":" + componentId;
                document.getElementById(fullComponentId).value = new_value;
            }
        }
    </script>

そしてそこに私は新しい問題を見つけます

まず、現在のタブIDを取得できるのでわかりません。そして第二に、私はjsがウィザードの次のイベントを作成する方法を教えてくれませんdocument.getElementsByName('wiz').next();。生成されたhtmlコードを確認しようとしています。すべてのタブが<li>あり、このタブがcssスタイルで選択されると、「ui-state-hightlight」が追加されます。

多分私はサイクルを開発しようとします。しかし、私は他の解決策を見つけることができません。

4

2 に答える 2

1
  1. javascriptで現在のステップのインデックスを取得するには、getStepIndex()関数を使用します。バッキングBeanの現在のステップの名前を取得するには、ビューでウィザードへの参照を取得し、(次のタブgetStep()のプロパティを返す)または(実際の次のオブジェクトを返す)を呼び出す必要があります。現在のタブの名前)。idgetStepToProcess()Tab

  2. <p:wizard/>javascript(またはバッキングBeanコード)を処理するためにフックできるイベントコールバックがありonnextますonback<p:remoteCommand/>

于 2013-01-30T15:22:39.643 に答える
0

ハンドラーに次の行を追加するだけです

public String onFlowProcess(FlowEvent event) throws Exception {
        if ((skip == true)) {
            skip = false;   //reset in case user goes back
            generatePreview();
            return CONFIRM_TAB_ID;
        } else {
            String newTab = event.getNewStep();
            if (CONFIRM_TAB_ID.equals(newTab)) {
                generatePreview();
            }

            return newTab;
        }
    }

このtabIdを変更することは決してないので、定数CONFIRM_TAB_IDを使用するのは正常だと思います。

于 2013-02-06T10:35:55.410 に答える