0

これが私の要件です。レコードを追加することになっています。追加が成功して「表示」タブをクリックすると、データテーブルは更新されますが、テーブルは変更されません。ゲッター メソッドを使用して、バッキング Bean からデータ テーブルにデータをフェッチしています。

内部データテーブル:

<p:dataTable id="ci_table" value="#{ciConfigBean.ciList}" var="cid" scrollable="true" selectionMode="single" selection="#{ciConfigBean.ciConfigSave}"
            rowKey="#{cid.ciConfigId}" editable="true" resizableColumns="true">

onTabChange イベントから呼び出して、javascript メソッドを使用してみました。

第 1 関数:

function onLoad() {
             alert("tab"); 
            var oTable;
            oTable = $('#ci_table').dataTable();
            oTable.fnClearTable( 0 );
            oTable.fnDraw();
        }

2番目の機能:

var oTable;
            $(document).ready(function() {
                    oTable = $('#ci_table').dataTable({
                        "bProcessing" : true,
                        "bServerSide" : true,
                        "sAjaxSource" : '${request.contextPath}'
                                + '/ciConfigBean/getCiList'
                        });
                        oTable.fnReloadAjax();
                });

タブ変更コード:

<p:tab id="ci" title="CI">
            <p:tabView id="insideCi" onTabChange="onLoad()"
                activeIndex="#{home.activeInner}">
                <p:tab id="ciList" title="CI List">
                    <ui:include src="ci/ciList.xhtml" />
                </p:tab>
                <p:tab id="newCi" title="New CI">
                    <ui:include src="ci/newCi.xhtml" />
                </p:tab>
            </p:tabView>
        </p:tab>

しかし、何も機能していないようです。これに関する提案はありますか?

4

3 に答える 3

0

tabviewタグにdynamic="true"を追加してみてください。あなたのsaveメソッドが機能していると仮定すると、これでうまくいくはずですが、あなたの投稿からはわかりません。JavaScriptは必要ありません。

于 2012-12-26T11:46:11.817 に答える
0

@Andre、ページ全体を更新するとデータテーブルが更新されます。しかし、タブを変更しても更新されません。私のBeanのSaveメソッドは次のとおりです。

public void saveCiConfig() throws SystemException {
    long ciId = CounterLocalServiceUtil.increment(CIConfig.class
                    .getName());
            ciConfigSave.setCiConfigId(ciId);
            ciConfigSave.setProjectId(0);
            ciConfigSave.setParentCIConfigId(0);
            ciConfigSave.setCreatedDate(new Date());
            ciConfigSave.setCreatedBy(FacesUtil.getUserId());
            ciConfigSave.setUpdatedDate(null);
            ciConfigSave.setUpdatedBy(0);
            if (enable == Boolean.TRUE) {
                ciConfigSave.setStatus(DataConstant.STATUS_ACTIVE);
            } else {
                ciConfigSave.setStatus(DataConstant.STATUS_INACTIVE);
            }
            ciConfigSave.setSetupComplete(Boolean.FALSE);
            try {
                  CIConfigLocalServiceUtil.addCIConfig(ciConfigSave);
                FacesMessageUtil
                        .addGlobalInfoMessage("ci.message.submitSuccess");
                new Home().setActiveOuter(0);
                new Home().setActiveInner(1);
                setEditMode(Boolean.FALSE);
                resetInit();
            } catch (SystemException e) {
                FacesMessageUtil
                        .addGlobalErrorMessage("ci.message.submitFailed");
                log.error("error while saving the CI Configuration", e);
            }
于 2012-12-27T02:56:12.987 に答える
0

わかりました、そうする適切な方法はないと思います...回避策として、手動で更新するためのコマンドボタンを追加しました。

于 2013-01-03T09:02:26.803 に答える