Я довольно часто использовал Dynamic Content Control с формулой Dynamic Page, но он всегда вычислялся при загрузке страницы и не менялся. Я работаю над тестом, в котором хочу выбрать, какую страницу отображать, на основе поля со списком и события onChange. Я выполнил полное обновление, а также несколько различных частичных обновлений, но оказалось, что страница вычисляется только при загрузке страницы. Страницы, которые это вызывает, ничего не делают, кроме как отображают «Страница первая», «Страница вторая» и т. д. Операторы печати печатаются только с начальной загрузки страницы. Я сделал частичное обновление «customeControlInclude», «dynamicContentView» и полное обновление в событии onChange поля со списком, но ни одно из них не приводит к тому, что dynamicControlView меняет загруженную страницу.
Итак, мой вопрос: «Есть ли способ заставить динамический элемент управления содержимым пересчитывать и отображать соответствующую страницу?
<?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"
xmlns:xe="http://www.ibm.com/xsp/coreex">
<xp:this.resources>
<xp:script src="/js Utils.jss" clientSide="false"></xp:script>
</xp:this.resources>
<xp:panel id="thisPage">
<xp:text escape="true" id="computedField1" value="#{sessionScope.ssSelectedView}"></xp:text>
 
<xp:br></xp:br>
<xp:br></xp:br>
<xp:comboBox id="comboBox1" value="#{sessionScope.ssSelectedView}"
style="width:20%">
<xp:selectItem itemLabel="Test One"></xp:selectItem>
<xp:selectItem itemLabel="Test Two"></xp:selectItem>
<xp:selectItem itemLabel="Test Three"></xp:selectItem>
<xp:selectItem itemLabel="Test Four">
</xp:selectItem>
<xp:eventHandler event="onchange" submit="true"
refreshMode="partial" refreshId="thisPage">
</xp:eventHandler>
</xp:comboBox>
<xp:br></xp:br>
<xp:panel id="panelView">
<xp:table>
<xp:tr>
<xp:td style="width:100.0%" valign="top">
<xe:dynamicContent id="dynamicContentView">
<xp:include id="customControlIncluder">
<xp:this.pageName>
<![CDATA[${javascript:try{
var debug:Boolean = true;
if (debug) print("Select Page in xpMainInput.xsp");
var viewName:String = sessionScope.ssSelectedView;
var page:String = null;
switch(viewName){
case "test One" :
page = "ccTestOne.xsp";
break;
case "Test Two" :
page = "ccTestTwo.xsp";
break;
case "Test Three" :
page = "ccTestThree.xsp";
break;
case "Test Four" :
page = "ccTestFour.xsp";
break
//Add additional case statements for each additional Application
}
if (page == null){
if (debug) print("Error in Main page is null ");
return "ccTestOne.xsp";
}else{
if (debug) print("xpMain page = " + page)
return page;
}
}catch(e){
print("Error Define Page in xpMain.xsp " + e.string());
}}]]>
</xp:this.pageName>
</xp:include>
</xe:dynamicContent>
</xp:td>
</xp:tr>
</xp:table>
</xp:panel>
</xp:panel>
</xp:view>