【问题标题】:XPages - display validation messages when Dojo is usedXPages - 使用 Dojo 时显示验证消息
【发布时间】:2013-07-22 22:40:27
【问题描述】:

我有一个 XPage,它分为几个 Dojo 内容窗格。我使用客户端 JavaScript 来决定显示哪个 Dojo 内容窗格。我现在想为 XPage 添加几个必填字段的验证。但是,对于客户端和服务器端验证,文档都无法保存,但如果需要验证的字段位于当前显示的 Dojo 内容窗格之外的 Dojo 内容窗格中,则用户不会看到服务器端错误消息并且光标未放置在验证失败的字段中(客户端消息可见,但光标未放置在验证失败的字段中)。当字段验证失败时,有什么方法可以添加要执行的 CSJS 代码? (理想情况下,我只想使用服务器端验证)

这是一个需要验证的字段

<xp:inputText id="FirstName" value="#{document1.FirstName}" required="true">
    <xp:this.validators>
        <xp:validateRequired>
            <xp:this.message><![CDATA["REQUIRED"]]></xp:this.message>
        </xp:validateRequired>
        <xp:validateLength minimum="5" maximum="10">
            <xp:this.message><![CDATA["VALIDATE"]]></xp:this.message>
        </xp:validateLength>
    </xp:this.validators>
</xp:inputText>

这里是 Dojo 内容窗格的代码

<xe:djContentPane id="Employee">  

此处显示或隐藏 Dojo 内容窗格的 CSJS 代码

var Allgemein = dojo.byId("#{id:Allgemein}");
if (sectionDisplay == "Allgemein") {
    dojo.style(Allgemein, "display", "block");
} else {
    dojo.style(Allgemein, "display", "none");
}
var sectionDisplay = dojo.cookie("sectionDisplay");

【问题讨论】:

  • 如果您可以在问题中包含一些代码 sn-p,我将非常有帮助。
  • 这里是需要验证的字段&lt;xp:inputText id="FirstName" value="#{document1.FirstName}" required="true"&gt; &lt;xp:this.validators&gt; &lt;xp:validateRequired&gt; &lt;xp:this.message&gt;&lt;![CDATA["REQUIRED"]]&gt;&lt;/xp:this.message&gt; &lt;/xp:validateRequired&gt; &lt;xp:validateLength minimum="5" maximum="10"&gt; &lt;xp:this.message&gt;&lt;![CDATA["VALIDATE"]]&gt;&lt;/xp:this.message&gt; &lt;/xp:validateLength&gt; &lt;/xp:this.validators&gt; &lt;/xp:inputText&gt; 这里是道场内容窗格的代码&lt;xe:djContentPane id="Employee"&gt;
  • 这里是csjs代码来显示或隐藏一个dojo内容窗格var Allgemein = dojo.byId("#{id:Allgemein}"); if (sectionDisplay == "Allgemein") { dojo.style(Allgemein, "display", "block");} else { dojo.style(Allgemein, "display", "none"); } var sectionDisplay = dojo.cookie("sectionDisplay");
  • 注释确实不是放置代码的好地方。您能否编辑您的问题并将代码放入其中?
  • 你为德国人工作?

标签: javascript dojo xpages xpages-extlib


【解决方案1】:

您可以做很多事情,具体取决于您的代码应该有多复杂。如果您只想检查(客户端)是否有必填字段,请添加一个 onSubmitEvent 并查找具有 aria-required 作为属性的字段。在这些控件中,您构建了一个显示,允许用户跳转到有问题的控件 - 空控件。

如果您宁愿进行服务器端验证,因为您不知道要验证的所有内容,然后有一个 onload 脚本(提交刷新页面)或在部分刷新后运行一个查找 aria-invalid属性。然后,您可以呈现列表或表格列表跳转到所需的控件,因为您可能在不同的窗格中有多个

我会将 errormessages 控件(显示服务器端验证错误的那个)放在始终可见的顶部窗格中(始终如:如果 errormessages 不为空)。

有意义吗?

【讨论】:

  • 谢谢,我将首先让错误窗格始终可见,看看这是否足以满足客户要求。我更喜欢使用服务器端验证,因为有大量必填字段。
  • 服务器端验证设置 aria-invalid 属性。您可以使用 CSS 使字段更加可见,并使用 js 帮助用户导航到它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多