我试图获得部分刷新,只刷新我需要刷新的页面块。我知道如果我进行正常的部分刷新,则会调用整个JSF生命周期。我知道解决这个问题的方法是设置“设置部分执行模式”并选择我想要刷新的ID。
但是我无法让它发挥作用。
下面我举了一个非常简单的例子。当我在execID中放入一个值时,我没有看到刷新的表单行。当我没有把execID放进去时我会看到表格行的值,但我相信我没有做部分刷新。
我不理解某事。任何帮助都会非常有用。
<?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">
<xe:formRow id="flyApplication" labelPosition="inherit"
label="Application(s)">
<xp:checkBoxGroup id="field1" layout="lineDirection"
styleClass="twoColumnCheckBoxGroup">
<xp:eventHandler event="onchange" submit="true"
refreshMode="partial" refreshId="pnlModules" execMode="partial" execId="pnlModules">
<xp:this.action><![CDATA[#{javascript:var v = getComponent("field1").getValue();
print (v);}]]></xp:this.action>
</xp:eventHandler>
<xp:selectItems>
<xp:this.value><![CDATA[#{javascript:["Yes","No"]}]]></xp:this.value>
</xp:selectItems>
</xp:checkBoxGroup>
</xe:formRow>
<xp:panel id="pnlModules">
<xe:formRow id="fr2" labelPosition="inherit"
label="Module(s)">
<xe:this.rendered><![CDATA[#{javascript:var v = getComponent("field1").getValue();
if (v == "Yes")
{return true}
else
{return false}}]]></xe:this.rendered>ddd<xp:checkBoxGroup id="field2" layout="lineDirection"
styleClass="fourColumnCheckBoxGroup">
<xp:this.value><![CDATA[#{javascript:"a"}]]></xp:this.value>
<xp:selectItem itemLabel="Values" itemValue="Values"></xp:selectItem>
</xp:checkBoxGroup>
</xe:formRow>
</xp:panel>
</xp:view>
答案 0 :(得分:2)
部分执行要求触发事件的控件位于部分执行的面板内。
请记住,部分刷新和部分执行是两回事,但如果你记住我上面所说的话,可以一起使用。