gpt4 book ai didi

jsf - getSubmittedValue() 即将到来 null jsf

转载 作者:行者123 更新时间:2023-12-04 04:39:34 25 4
gpt4 key购买 nike

我在 jsf 中遇到一个问题,当我附加到我的 时,如下所示

<h:inputText id="" value="" binding="">
<a4j:support
actionListener="Action_Class.validateUserName"
event="onblur" />
</h:inputText>

如上所示,当我从字段中跳出时,validateUserName 必须调用。它正在调用,但是当我尝试获取我提交的值时,如下所示,
null 来了。
UIInput input = actionEvent.getParent();
String userName = input.getSubmittedValue();

用户名将作为空值出现。(提交的值仅在 IE 浏览器中出现,但在其余浏览器中,我将作为提交值变为空值)。
请有需要的。

最佳答案

操作监听器在调用应用程序阶段运行。那时,输入组件的提交值由 UIInput#getSubmittedValue() 提供。仅当输入组件本身转换或验证失败时才可用。在验证阶段,如果输入组件已成功转换和验证,则提交的值将被清除并设置组件的(本地)值。这可以通过 UIInput#getValue() 获得.

所以,你实际上应该使用:

String userName = (String) input.getValue();

无关 对于具体问题, Action 监听器是执行验证的错误工具(至少, Action 监听器的类名暗示您的具体功能要求是验证用户名)。您应该为此使用普通验证器。干掉整个 actionListener并注册 <h:inputText validator><f:validator>而不是通常的方式。提交的(和转换的,如果适用)值以这种方式立即可用作为 validate() 的第三个参数方法来自 Validator界面。

例如
<h:inputText ... validator="usernameValidator">
<a4j:support event="onblur" />
</h:inputText>


public class UsernameValidator implements Validator {

@Override
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
String username = (String) value;
// ...

if (!valid) {
throw new ValidatorException(new FacesMessage("Invalid username."));
}
}
}

关于jsf - getSubmittedValue() 即将到来 null jsf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19129728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com