Java服务器页面: How to get a value into an attribute from code without Expression Language?

标签 java jsp jsf el

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

我希望能够通过代码动态分配正则表达式模式,但根据 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 控件动态分配属性值的首选方法是什么?

最佳答案

实现 javax.faces.validator.Validator 并将其注册为 <validator>faces-config.xml 。在真正的 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()));
    }
}

关于Java服务器页面: How to get a value into an attribute from code without Expression Language?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1880949/

相关文章:

java - androidx.security 依赖问题

java - JSP JSTL <c :if ="${1 == 2}"> returning true

jsf - 使用 JSF 应用程序下载日志文件?

java - 为什么 Set 在 webflow 和 Primefaces 中不起作用

java - 需要用 JavaScript 编写的 Java 编辑器

java - 套接字,java发送文件服务器客户端

java - 从线程中获取消息

java - 迭代 map 时为struts迭代器指定范围

Spring MVC 模型不显示字符串

jsf - PrimeFaces 数据表 - 什么是 f :facet actually doing?