username
プロパティを常に小文字に変換するにはどうすればよいですか?
これは動作しません:
<h:inputText value="#{userService.user.username.toLowerCase()}" />
これによってターゲットが「到達不能」になるため。他にどうすればこれを行うことができますか?
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関数を使用できます
含める: <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
< h:inputText value="${fn:toLowerCase(string)}"/> を使用します
または、Java で .toLowerCase() を使用してユーザー名を小文字にすることもできます。
この方法でうまくいくはずです。名前を設定するとすぐに、名前は小文字になります。
String name;
public void setName(String name){
this.name = name.toLowerCase();
}