Xpages 按钮只能在XPage上单击一次

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事件。为什么会这样?

我有下面的XPage,它有一个表和两个tr

第一个是一个按钮本身,当第一次单击时,它将值放入
viewScope['showPasswordTr']
boolean
true
中,当再次单击时,将值放入
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的较短代码):