2013-05-07 56 views
1

我正在创建一个应用程序,我想以向导格式将数据添加到窗体中。我将会有一系列模式对话框来逐步完成数据录入过程。我正在使用Bootstrap模式对话框。我打算将每一步都保存到一个托管bean。应用程序需要在所有设备上工作,这就是为什么我这样做。如何在另一个自定义控件中传递和显示自定义控件

我想创建一个自定义控件来保存模式窗口,然后使用自定义属性将窗口标题,mainContent,按钮标题传递给控件。窗口标题和按钮标题正常工作。 “mainContent”属性包含要在窗口中显示的自定义控件的XML代码。我的问题是如何使控件显示实际的自定义控件内容与自定义控件名称的XML字符串。我的目标是制作一个可重用的片段。

我试过使用'包含页面',这使得整个xpage消失。我尝试过使用'dynamicContent'控件,但一直无法让它工作。有一个非常明显的可能性,我没有正确使用该控件。我把那个代码留在那里。旁注:XC:在XPage上的布局是我的引导程序的布局,我不认为在因素

的XPage代码 - 所有这些都是有调用modalWindow自定义控件:

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xc="http://www.ibm.com/xsp/custom"> 
<xc:layout> 
    <xc:modalWindow button_title="Save and Continue to Step 2" 
     window_title="Create New PO - Step 1 of 7"> 
     <xc:this.mainContent><![CDATA[<"xc:NewPO_Step1 />"]]></xc:this.body> 
    </xc:modalWindow> 
</xc:layout> 

下面是定制控件的代码 “modalWindow”

<?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"> 
<a href="#myModal" role="button" class="btn" data-toggle="modal"> 
    Begin Creating New PO 
</a> 
<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" 
    aria-labelledby="myModalLabel" aria-hidden="true"> 
    <div class="modal-header"> 
     <button type="button" class="close" data-dismiss="modal" 
      aria-hidden="true"> 
      × 
     </button> 
     <h3 id="myModalLabel"> 
      <xp:text escape="true" id="computedField3" 
       value="#{javascript:compositeData.window_title}"> 
      </xp:text> 
     </h3> 
    </div> 
    <div class="modal-body"> 
     <xe:dynamicContent id="dynamicContent1"><xp:text escape="true" id="computedField2" value="#{javascript:compositeData.mainContent}"> 
</xp:text><xp:this.facets> 
</xp:this.facets> 
     </xe:dynamicContent> 
    </div> 
    <div class="modal-footer"> 
     <button class="btn" data-dismiss="modal" aria-hidden="true"> 
      Cancel 
     </button> 
     <button class="btn btn-primary"> 
      <xp:text escape="true" id="computedField4" 
       value="#{javascript:compositeData.button_title}"> 
      </xp:text> 
     </button> 
    </div> 
</div> 

回答

2

您可以使用“包含网页”添加“.xsp”定制控件的名称:

<div class="modal-body"> 
    <xp:include id="include1"> 
     <xp:this.pageName><![CDATA[${javascript:compositeData.mainContent + ".xsp"}]]></xp:this.pageName> 
    </xp:include> 
</div> 

添加mainContent="nameOfYourCustomControl"到modalWindow电话,你有你正在寻找的灵活性:

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xc="http://www.ibm.com/xsp/custom"> 
     <xc:modalWindow button_title="Save and Continue to Step 2" 
      window_title="Create New PO - Step 1 of 7" mainContent="step1"> 
     </xc:modalWindow> 
</xp:view> 

在这个例子你必须创建一个包含所有内容的自定义控件“step1”。

+0

谢谢你Knut,它的工作原理! – 2013-05-07 19:28:21