将字符串转换为小写,以进行XHTML内的属性绑定



我如何始终将属性username转换为较低的情况?

这不起作用:

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

由于目标无法"无法达到"。我还能执行此操作?

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

您无法在给定的EL表达式上执行"集合"操作,而这是强制性的,以便使用提交值更新模型值。toLowerCase()方法表达式没有相应的设置器方法。

从技术上讲,您应该为作业创建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" />

最好不要使用转换策略混乱模型。

您可以将JSTL函数用于此

包括:&lt;%@ taglib uri =" http://java.sun.com/jsp/jstl/functions" prefix =" fn"%>

和使用&lt;h:inputText value =" $ {fn:tolowercase(string)}"/>

,或者您可以在.tolowercase()中使用Java的小写字母。

以这种方式工作。一旦设置了名称,名称就会减少。

String name;
public void setName(String name){
 this.name = name.toLowerCase();
}

最新更新