当前位置: 首页 > 知识库问答 >
问题:

Primefaces自动完成验证器正在验证错误的值

益明朗
2023-03-14

我有一个带有验证器的自动完成-如果我向自动完成器提交一个“AAA”的查询,那么我会得到一个以“AAA”开头的建议列表。我选择了“AAA001”,然后调用验证器,但在验证器中,当我期望“AAA001”时,值为“AAA”。

这是我的代码:

<p:autoComplete id="codeAutoComplete"
   completeMethod="#{BEAN.autoCompleteCode}"
   minQueryLength="3" forceSelection="true"
   value="#{OBJECT.code}"
   validator="#{BEAN.validateCode}" >
   <f:attribute name="object" value="#{OBJECT}" />
   <p:ajax listener="#{BEAN.onCodeSelect}"
       update="form"/>
</p:autoComplete>

代码只是一个带有getter和setter以及我的验证器的字符串:

public void validateCode(FacesContext ctx, UIComponent component, Object value) {
    String code = (String) value;
    ...
}

即时代码=‘AAA’,而不是预期的‘AAA001’。我添加了object属性只是为了确保对象上没有设置“AAA001”,但正如预期的那样,它没有设置。

我能做些什么来获得所选的值而不是提交的值吗?

谢谢

共有2个答案

端木朝
2023-03-14

我有同样的问题,我通过简单地从更新区域中排除自动完成来解决它。所以如果你想在没有自动完成部分的情况下更新整个表单,下面是如何做到的:如何在父组件的ajax更新中排除子组件?

乐寒
2023-03-14

自动完成验证器函数(根据Primefaces文档)-指验证输入的方法的方法表达式。

传递给“验证器”的对象验证插入的值,而不是选定的值,因为根据提供的代码,此函数在任何其他函数之前完成。

我宁愿建议您将想要应用“AAA001”的逻辑移到“BEAN”。onSelect“侦听器”,因为这适用于选择为与插入的值对象对应的值对象(如果事件被相应设置)。

我希望这能帮助你解决这个问题。祝你好运!

 类似资料:
  • 问题内容: 非常奇怪的错误。我使用的是http://developers.facebook.com/docs/authentication/。所以我创建了对fb的请求并传递redirect_uri。我在本地主机上使用测试站点。所以如果我通过 redirect_uri = http://localhost/test_blog/index.php 它工作正常,但如果我通过 redirect_uri =

  • 在测试中,我使用的是mockobject: 我试图验证其方法的使用: 但它抛出以下异常: 组织。莫基托。例外情况。滥用。UnfinishedVerificationException:此处缺少验证(模拟)的方法调用: 这一行的例外点是: setMaxRows接受一个int。 当我注释掉这一行时,测试成功了。调试程序时,我可以看到正在设置的setMaxRows方法: BrandLabels是一个Li

  • 错误: TypeError:无法读取未定义的LoginForm c:/reactjs/hello-world/src/components/accountbox/LoginForm.js的属性“state”:23 2023 value={this.state.input.email}^24 onchange={this.handlechange}25 class=“form-control”26

  • 我有一个jsf表单,它包括p: autoCompelete字段。给你; 表单中有3个验证。它们是“必需=真”。此外,它们位于p:自动完成字段中。 所以,问题是,当我在没有输入的情况下单击“保存按钮”时,验证工作正常。然而,当我只在一个p:autocomplete字段中输入,然后单击“保存”按钮时,primefaces验证不起作用,我得到了java错误。我的意思是,由于另外两个必填字段为空,我希望得

  • 问题内容: 我想自定义弹簧验证错误 但是我做不到。要采取的步骤是什么? 问题答案: 该JSR 303的默认邮件插补算法,您可以通过提供捆绑命名的资源来定制信息。在类路径中创建一个文件,其中包含: 这将更改@Size约束的默认消息,因此您应该使用@Size约束而不是特定于Hibernate的@Length约束。 您可以更改特定约束实例的消息,而不是更改所有约束的默认消息。message在约束上设置属

  • 我有以下xml: 我在网上验证了xml,它的格式很好。接下来我做了架构: 当我尝试在线验证时,会出现以下错误:http://www.utilities-online.info/xsdvalidation/?save=72595340-b1e9-4061-a655-c6cfb9cdac44-XSD验证#。USIxpqw1pi点击按钮根据xsd验证xml并查看所有错误。有人知道如何毫无差错地解决这个问