试图在对话框中获取用户输入。 InputText只是看起来是只读的

时间:2017-03-20 22:26:57

标签: xpages

我有一些代码,见下文。这是一个对话框,其中包含一个列表框供用户选择一个或多个选项,文本字段用于输入电子邮件地址。

当我将一个viewScope变量作为捕获电子邮件地址的值时,该字段变得像只读一样。如果我删除了值= viewScope .....该字段显示为可编辑的边框等。

如何让字段可编辑并将值存储在范围变量中,以便在单击提交按钮时使用?

仅供参考,列表框工作正常。

<?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"
xmlns:xc="http://www.ibm.com/xsp/custom">

<xp:panel id="panelJenarkCurrentYearReportsMain">
    <xp:panel id="panelJenarkCurrentYearReportsInner">
        <xe:dialog id="dialogCurrentReports" title="Fetch Current Year Reports">
            <xp:div styleClass="lotusMessage lotusInfo" role="alert">
                <xp:listBox id="listBoxJenarkCurrentYearReports" value="#{viewScope.jenarkCurrentYearReports}"
                    multiple="true" style="height:150.0px;width:98%;margin-left:5px"
                    required="true">
                    <xp:selectItems id="selectItems1">
                        <xp:this.value><![CDATA[#{javascript:var db = new Array( @DbName()[0], "dbWorkflow\\reference" );
result = @DbLookup(db, "($VSYSCTLKW)", "*ALL*ALL*ALLJenarkCurrentYearReports", "KWValues" );
if (result && typeof result == "string") 
result = new Array(result); 
return result; 
}]]></xp:this.value>
                    </xp:selectItems>
                    <xp:this.validators>
                        <xp:validateRequired
                            message="Please Select one or more Current Year Reports!" />
                    </xp:this.validators>
                </xp:listBox>
                <xp:panel>
                    <xp:label value="Send Reports To:"
                        id="labelJenarkReportsEmailTo"
                        style="width:20%;padding-left:3.0px;margin-left:3.0px">
                    </xp:label>
                </xp:panel>
                <xp:panel>
                <xp:inputText id="inputTextJenarkReportsEMailTo"
                    style="width:75%;padding-left:3.0px;margin-left:5.0px"
                    value="#{javascript:viewScope.jenarkReportEMail;}" required="true">
                    <xp:this.validators>
                        <xp:validateRequired
                            message="Please Enter a valid email Address!">
                        </xp:validateRequired>
                    </xp:this.validators>
                </xp:inputText>
                </xp:panel>
            </xp:div>
        </xe:dialog>
    </xp:panel>
</xp:panel>
</xp:view>

1 个答案:

答案 0 :(得分:2)

将您的值定义更改为

private void Button_Click(object sender, RoutedEventArgs e)
{
  tabTwo.IsSelected = true;
  FocusManager.SetFocusedElement(tabTwo, txtTwo);

}

必须使用表达式语言(EL)。这样,inputText控件不仅知道如何读取viewScope变量的当前值,还知道将用户的输入值写入的位置。

如果您使用value="#{viewScope.jenarkReportEMail}" 启动表达式,那么它将执行JavaScript代码并将当前值"#{javascript:..."作为inputText的值插入。就像一个字符串,而不是一个可以写入的变量。这就是为什么inputText无法写入并将其自身显示为“只读”的原因。