【问题标题】:ReadOnly field in Xpage not submittedXpage 中的 ReadOnly 字段未提交
【发布时间】:2013-01-16 06:10:42
【问题描述】:

我的 Xpage 中有一个字段,我希望它是只读的并在保存时提交到数据库。该字段从 Ajax 调用中获取值

将属性 ReadOnly 设置为 true 会创建一个 <span> 而不是只读字段。

设置属性“Show disabled control for readonly”会创建一个带有 readonly=readonly 属性的输入文本字段。

<input type="text" class="xspInputFieldEditBox" readonly="readonly" name="view:_id1:_id2:_id3:_id28:callbackFieldControlSet:InstrumentShort" id="view:_id1:_id2:_id3:_id28:callbackFieldControlSet:InstrumentShort">

它不会被保存到数据库中。

据我所知,只读字段已提交但未禁用。

我在这里做错了什么?

/M

【问题讨论】:

    标签: xpages readonly


    【解决方案1】:

    您可以使用 attr-property 添加 readonly 属性:

    <xp:inputText id="inputText2" value="#{document1.ReadOnly}">
       <xp:this.attrs>
          <xp:attr name="readonly" value="true" />
       </xp:this.attrs>
    </xp:inputText>
    

    顺便说一句:disabledreadonly 属性的行为是正确的,因为这是服务器端的定义。您想用值编辑组件,这就是为什么必须允许它接受值的原因。仅在客户端禁用它在技术上没有任何效果。

    【讨论】:

    • 这是什么版本?在 8.5.2 上,当我使用这个 sn-p 时,我收到以下错误:“未知属性 this.attrs。它没有在标签 xp:inputText 上定义。”
    • @rfk: attrs 属性是在 8.5.3 中引入的。这就是为什么它不适用于 8.5.2 或更低版本。
    【解决方案2】:

    我认为这是一个错误。你是对的,the read only field should get saved 在 8.5.1 版中,当“显示禁用的只读控件”属性不存在时,我曾经通过 JavaScript 将该字段设置为只读。这是sn-p的代码:

    <xp:scriptBlock id="scriptBlock1">
        <xp:this.value><![CDATA[function makeFieldReadOnly() {
        document.getElementById("#{id:inputText2}").readOnly = true;
    }
    window.onload = makeFieldReadOnly;]]></xp:this.value>
    </xp:scriptBlock>
    

    在上面的sn-p中,函数makeFieldReadOnly在页面加载时将编辑框inputText2标记为只读。

    【讨论】:

    • 该链接只描述了一个readonly组件应该在表单数据中submitted。它仅描述客户端。
    • @SvenHasselbach: 哦...刚看到Domino Designer中只读复选框悬停时的描述-“禁止用户更改,值保存提交时...”。任何想法为什么 IBM 决定这样做,因为保存只读字段的值将是标准行为?
    • 我同意斯文的观点。服务器端的只读设置应该是这个意思。
    • @SvenHasselbach:我使用脚本块将日期字段设为只读,以便我们能够强制用户仅通过选择器进行日期选择。同样在扩展库中,我使用它将与名称选择器和值选择器关联的文本字段设置为只读,以便用户选择值(通过选择器)而不是输入它们。有没有更好的方法来做到这一点?
    • @MikaelGrevsten:不。如果我在应用程序中有一些字段,并且不允许更改这些字段(无论如何),那么信任 HTML 的“只读”属性是一个安全问题输入字段。服务器不知道是谁发送了请求(浏览器、工具……)。客户端验证也有同样的问题。以您的示例为例:我不知道您对模型和所有者做了什么,但是如果 Typeahead 失败(连接问题 f.e.)怎么办?您可能会存储带有错误汽车和所有者信息的车牌。您需要验证服务器端的信息...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-17
    • 2017-11-07
    • 1970-01-01
    • 2019-09-25
    • 1970-01-01
    相关资源
    最近更新 更多