Xpages 按钮只能在XPage上单击一次
我有下面的XPage,它有一个表和两个tr 第一个是一个按钮本身,当第一次单击时,它将值放入Xpages 按钮只能在XPage上单击一次,xpages,lotus-notes,lotus-domino,view-scope,Xpages,Lotus Notes,Lotus Domino,View Scope,我有下面的XPage,它有一个表和两个tr 第一个是一个按钮本身,当第一次单击时,它将值放入viewScope['showPasswordTr']booleantrue中,当再次单击时,将值放入false中 第二个tr有一个输入,如果viewScope['showPasswordTr']为true,则会呈现该输入 我遇到的问题是,我只能单击按钮一次,而且它是100%,因为存在输入字段。如果我移除它,它将按预期工作 第二次,依此类推,按钮只是冻结,不执行指定的操作onclick事件。为什么会这样?
viewScope['showPasswordTr']
booleantrue
中,当再次单击时,将值放入false
中
第二个tr有一个输入,如果viewScope['showPasswordTr']
为true,则会呈现该输入
我遇到的问题是,我只能单击按钮一次,而且它是100%,因为存在输入字段。如果我移除它,它将按预期工作
第二次,依此类推,按钮只是冻结,不执行指定的操作onclick
事件。为什么会这样?我怎样才能使它按预期工作
提前谢谢
编辑
很明显,这都是因为required
属性设置为true
。。。那么,我应该只在disered控件中检查元素是否为空吗?这是一种好的做法吗
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:table id="buttonTable">
<xp:tr id="buttonTr">
<xp:td id="buttonTd">
<xp:button id="authAsPersonButton"
value="This button can be clicked only once" />
<xp:eventHandler event="onclick" submit="true"
refreshMode="partial" execId="buttonTable"
refreshId="buttonTable">
<xp:this.action>
<![CDATA[#{javascript:
print("clicked");
if(viewScope['showPasswordTr'])
{
viewScope['showPasswordTr'] = false;
}
else
{
viewScope['showPasswordTr'] = true;
}
}]]>
</xp:this.action>
</xp:eventHandler>
</xp:td>
</xp:tr>
<xp:tr id="passwordLabelTr" rendered="#{javascript:
return viewScope['showPasswordTr'] == true;
}">
<xp:td id="passwordLabelTd">
<xp:text id="passwordText" style="font-size: 14px;">
<xp:this.value>
<![CDATA[#{javascript:
return 'password:';
}]]>
</xp:this.value>
</xp:text>
</xp:td>
<xp:td id="passwordInputTd" align="right">
<xp:inputText id="passwordInput" password="true"
required="true">
</xp:inputText>
</xp:td>
</xp:tr>
</xp:table>
</xp:view>
将execId=“buttonTd”
或disableValidators=“true”
添加到eventHandler属性中。那么您的示例就如预期的那样工作了
我对代码进行了一些优化(按钮内的事件处理+处理viewScope.showPasswordTr的较短代码):