java - 如何访问 UIComponent 属性中链接的 bean?

标签 java validation jsf-2 primefaces el

我需要访问在 UIComponent 的 EL 表达式中使用的 bean 对象。

例如,在这个示例代码中:

xhtml:

<h:form>
    <f:view>
        <p:selectBooleanButton value="#{baseBean.selected}" onLabel="Instalar" offLabel="Ignorar" onIcon="ui-icon-check" offIcon="ui-icon-close">
            <f:validator validatorId="baseValidator.items" />
        </p:selectBooleanButton>
        <p:commandButton type="submit" value="Submit"
            actionListener="#{baseBean.process}"
            ajax="false" />
    </f:view>
</h:form>

java:

@FacesValidator("baseValidator.items")
public static class BaseValidator implements Validator
{

    @Override
    public void validate(FacesContext context, UIComponent component,
            Object value) throws ValidatorException {
        ValueReference reference = component.getValueExpression("value").getValueReference(context.getELContext());
        Object o1 = reference.getBase();
        Object o2 = reference.getProperty();
        return; //break point here
    }

}

当按下命令按钮时 BaseValidator.validate被执行,我需要得到 baseBean <p:selectBooleanButton value="#{baseBean.selected}"> 中使用的对象

我的代码目前正在抛出 NullPointerException因为getValueReference正在返回 null。如何在验证方法中获取该对象?

最佳答案

value="#{baseBean.selected}" should be changed as "#{baseBean.value}"

关于java - 如何访问 UIComponent 属性中链接的 bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14058905/

相关文章:

java - map View 并获取 MapItemizedOverlay Activity 上的变量

java - 如何使用正则表达式拆分文本,但拆分后的单词继续保留正则表达式分隔符?

python - 如何添加验证特征/规则?

Javascript/jQuery 像浏览器一样验证电子邮件

html - 是否建议组合 : JSF 2. 0 + Facelets + HTML5/CCS3/JavaScript?

java - 从另一个更改 jpanel 的颜色

javascript - 在没有任何后端调用或数据库的情况下验证 AngularJS 中的用户

spring - 如何使用 WebApplicationInitializer 配置素面 FileUploadFilter

javascript - JSF ajax 请求后,jquery Curvy Corner 插件不加载

java - Gradle Multi Project Build推送到本地Maven之前