有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaServerPages:如何在没有表达式语言的情况下从代码中获取属性值?

我使用MyFaces 1.1 ValidateRegExpr标记根据正则表达式验证来自用户的输入

我希望能够通过代码动态地分配regex模式,但是根据http://myfaces.apache.org/commons11/myfaces-validators11/tagdoc/mcv_validateRegExpr.html,属性模式不支持表达式语言

我的JSP文件中的标记应该如下所示:

<tc:in value="${dataBean.currentBean.field}">
        <mcv:validateRegExpr
            pattern="${dataBean.currentBean.validationRegEx}"
            message="${dataBean.currentBean.validationMessage" />
</tc:in>

向不支持EL的jsp控件动态分配属性值的首选方法是什么


共 (1) 个答案

  1. # 1 楼答案

    实现一个^{}并将其注册为faces-config.xml中的<validator>。在真正的Java类中,您可以自由编写普通Java代码:)

    基本启动示例:

    public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
        SomeBean someBean = SomeFacesUtil.evaluateExpressionGet("someBean", SomeBean.class);
        if (!value.toString().matches(someBean.getPattern())) {
            throw new ValidatorException(new FacesMessage(someBean.getMessage()));
        }
    }