首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xpages & DataTables

Xpages & DataTables
EN

Stack Overflow用户
提问于 2016-10-27 14:00:11
回答 2查看 517关注 0票数 1

我正在使用带有xpage的dataTables jQuery插件,并有一个自定义控件,我将拖到任何页面上,传入viewName的一个自定义属性,它将显示一个使用REST的表--所有这些都是基于Oliver的一些很好的示例。

如果在基本页上使用此自定义控件,则所有操作都很完美,但是,如果该控件位于选项卡(这不是默认的)中,则当我单击包含该控件的选项卡时,在调用viewjson.getId()时会收到一个错误。

我认为问题是因为我在beforePageLoad上设置了viewjson?

你知道我怎么能让它在一个选项卡界面上工作吗?

代码如下:

代码语言:javascript
复制
<xp:this.beforePageLoad><![CDATA[#{javascript:var viewjson = new org.openntf.rest.DynamicView(compositeData.viewName);}]]></xp:this.beforePageLoad>
    <table
        id="#{javascript:viewjson.getId()}"
        class="table table-hover table-striped">
        <thead>
            <xp:repeat id="repeat1" rows="30" disableOutputTag="true"
                var="col">
                <xp:this.value><![CDATA[#{javascript:try {
viewjson.getCols()}
catch (e) {
openLogBean.addError(e,this)
}}]]></xp:this.value>
                <th>
                    <xp:text escape="true" disableTheme="true"
                        value="#{col}">
                    </xp:text>
                </th>
            </xp:repeat>
        </thead>
        <tbody></tbody>
    </table>

更新

我已经尝试了下面的尝试,首先尝试加载jQuery

代码语言:javascript
复制
<xp:this.resources>
<xp:headTag
            tagName="script">
            <xp:this.attributes>
                <xp:parameter
                    name="type"
                    value="text/javascript" />
                <xp:parameter
                    name="src"
                    value="/xsp/.ibmxspres/.extlib/responsive/jquery/jquery.min.js" />
            </xp:this.attributes>
        </xp:headTag>
        </xp:this.resources>

在xsp属性中也是如此

代码语言:javascript
复制
xsp.client.script.dojo.djConfig="dojo-amd-factory-scan": false

但是我仍然得到一个没有显示dojo元素的空白页面

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-27 19:55:21

自定义控件的beforePageLoad事件在加载XPage时被执行。

当稍后激活选项卡时,表被呈现,变量viewjson就消失了。

一种方法是将Java对象放入beforePageLoad中的复合数据变量beforePageLoad中,然后在表中使用它。但是,在呈现页面之前,您需要计算每个选项卡的所有视图。此外,该类不可序列化,不能存储在复合数据变量中。不过,您可以使类可序列化。

更好的方法是在表中实例化Java没有beforePageLoad事件:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
    <table
        id="#{javascript:
            var viewjson = new org.openntf.rest.DynamicView(compositeData.viewName);
            return viewjson.getId();
        }">
        <thead>
            <xp:repeat id="repeat1" rows="30" disableOutputTag="true"
                var="col" value="#{javascript: viewjson.getCols()}">
                <th>
                    <xp:text escape="true" disableTheme="true" value="#{col}">
                    </xp:text>
                </th>
            </xp:repeat>
        </thead>
        <tbody></tbody>
    </table>
</xp:view>

我用这个ccView测试了上面的自定义控件(带有属性viewName的XPage )

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex"
    xmlns:xc="http://www.ibm.com/xsp/custom">
    <xp:br />
    <xp:panel id="tabs">
        <xe:djTabContainer id="tabContainer"
            selectedTab="djTabPane1" defaultTabContent="one">
            <xe:djTabPane id="djTabPaneView" title="one" closable="false"
                partialRefresh="true">
                tab rendered first
            </xe:djTabPane>
            <xe:djTabPane id="djTabPane2" title="two" closable="false"
                partialRefresh="true">
                <xc:ccView viewName="ByCity" />
            </xe:djTabPane>
            <xe:djTabPane id="djTabPane3" title="three" closable="false"
                partialRefresh="true">
                <xc:ccView viewName="ByName" />
            </xe:djTabPane>
        </xe:djTabContainer>
    </xp:panel>
</xp:view>

当用户单击相应的选项卡时,选项卡“2”或“3”中的视图将加载到每个REST服务中。

票数 1
EN

Stack Overflow用户

发布于 2016-10-27 14:45:25

我认为主要的问题是,对于XPages核心控件,在浏览器变为活动之前,非活动选项卡实际上不会呈现给浏览器。因此,您在beforePageLoad()中调用的是寻找当时不存在的内容。可能有一种CSJS可以重新输入数据表。另一种选择是不使用选项卡核心控件,而是使用ext中的dojo版本。图书馆。我很确定dojo版本呈现所有内容,只使用CSS隐藏非活动选项卡。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40286627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档