如何始终将属性 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/