java - 将字符串转换为小写以在 xhtml 中进行属性绑定(bind)?

标签 java jsf jakarta-ee

如何始终将属性 username 转换为小写?

这不起作用:

<h:inputText value="#{userService.user.username.toLowerCase()}" />

因为目标因此变得“无法到达”。 我怎么能这样做呢?

最佳答案

<h:inputText value="#{userService.user.username.toLowerCase()}" />

您不能对给定的 EL 表达式执行“设置”操作,而这是强制性的,以便使用提交的值更新模型值。 toLowerCase() 方法表达式没有对应的 setter 方法。

从技术上讲,您应该创建一个 Converter为了工作。这是一个启动示例:

@FacesConverter("toLowerCaseConverter")
public class ToLowerCaseConverter implements Converter {

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object modelValue) {
        if (!(modelValue instanceof String)) { 
            return null; // Or throw ConverterException.
        }

        return ((String) modelValue).toLowerCase();
    }

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String submittedValue) {
        if (submittedValue == null) { 
            return null;
        }

        return submittedValue.toLowerCase();
    }

}

按如下方式使用:

<h:inputText value="#{userService.user.username}" converter="toLowerCaseConverter" />

您最好不要使用转换策略使模型困惑。

关于java - 将字符串转换为小写以在 xhtml 中进行属性绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13135253/

相关文章:

java - 我有一个非常奇怪的问题,url 被附加在查询字符串中

java - 将操作方法​​添加到动态创建的组合中

jquery - 通过 jQuery ajax 调用 JSF 操作

java - 与 map 比较时获取重复值

java - 如何让火柴人具有互动性?

java - 使用包含或循环遍历列表之间有什么大的区别吗?

java - 从 java 程序将根元素添加到 XSD

jsf - 在另一个托管 bean 中获取托管 bean 引用

java - 用于部署用 Java 编写的分层业务应用程序的模式

java - 将 PDF 转换为 XML-XSL - Java?