我试图隐藏/显示基于这样的条件的面板
<xp:panel id="panelUsersInput">
<!--<xp:this.rendered><![CDATA[#{javascript:return ((getComponent("optAttendees").getAttributes().get("value")=="defined"));}]]></xp:this.rendered>-->
<xp:inputText id="namUsersInput">
<xp:typeAhead mode="partial" minChars="3" ignoreCase="true" var="lupUsersInput">
<xp:this.valueList><![CDATA[#{javascript:@DbLookup( [ database.getServer(), 'names.nsf' ], '($VIMPeople)', lupUsersInput, 1, '[PARTIALMATCH]' );}]]></xp:this.valueList>
</xp:typeAhead>
</xp:inputText>
<xp:button value="" id="btnAddUser" styleClass="button add clear" title="add attendant">
<xp:span/>
<xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="panelUsersList" execMode="partial" execId="panelSelectionAttendees">
<xp:this.onStart><![CDATA[(dojo.byId("#{id:namUsersInput}").value!="");]]></xp:this.onStart>
<xp:this.action>
<![CDATA[#{javascript:
var lstUsers = getComponent("namUsers").getAttributes().get("value");
if(typeof(lstUsers)==typeof(java.util.Vector)) {
lstUsers.push(getComponent("namUsersInput").getAttributes().get("value"));
lstUsers.sort();
} else {
lstUsers = @Trim(@List(lstUsers, getComponent("namUsersInput").getAttributes().get("value")));
}
getComponent("namUsersInput").getAttributes().put("value", "");
getComponent("namUsers").getAttributes().put("value", lstUsers);
}]]>
</xp:this.action>
<xp:this.onComplete><![CDATA[if(dojo.byId("#{id:rpUsersSelection}")) { highlightSection("#{id:rpUsersSelection}"); }]]></xp:this.onComplete>
</xp:eventHandler>
</xp:button>
<div class="clearAll"/>
</xp:panel>
如您所见,我已禁用面板的渲染选项。使用此设置,此面板内的按钮按照告知的方式工作。
为面板启用渲染选项时,此面板中的按钮正在执行某些操作,但部分刷新返回的结果就像重新加载指定的部分(带有部分ID)。
这个事实更有趣的是:当面板渲染条件为假时,按钮触发的事件仍然会被渲染。但是事件处理程序找不到它要绑定的父元素。结果是此事件与整个页面(body-element)的全局绑定。
XSP.addOnLoad(function() {
...
XSP.attachPartial("view:_id1:_id11:_id47", "view:_id1:_id11:btnAddUser", "view:_id1:_id11:panelSelectionAttendees", "onclick", view__id1__id11__id47_clientSide_onclick, 2, "view:_id1:_id11:panelUsersList", null, "if(dojo.byId(\"view:_id1:_id11:namUsers\").value!=\"\") { dojo.byId(\"view:_id1:_id11:namUsersInput\").value=\"\"; highlightSection(\"view:_id1:_id11:panelUsersList\"); }", null);
...
});
有其他人注意到这种行为吗?我认为隐藏面板也会隐藏这个面板中的所有底层元素。
答案 0 :(得分:0)
似乎是一个已知的错误
LO73179:XPAGES事件处理器渲染与父母组件的渲染不匹配