我怎么能总是将属性转换username为小写?
这不起作用:
<h:inputText value="#{userService.user.username.toLowerCase()}" />
Run Code Online (Sandbox Code Playgroud)
因为目标变得"无法到达".我怎么能这样做?
<h:inputText value="#{userService.user.username.toLowerCase()}" />
Run Code Online (Sandbox Code Playgroud)
您不能对给定的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();
}
}
Run Code Online (Sandbox Code Playgroud)
使用方法如下:
<h:inputText value="#{userService.user.username}" converter="toLowerCaseConverter" />
Run Code Online (Sandbox Code Playgroud)
您最好不要使用转换策略来混淆模型.
| 归档时间: |
|
| 查看次数: |
6685 次 |
| 最近记录: |