7

usernameプロパティを常に小文字に変換するにはどうすればよいですか?

これは動作しません:

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

これによってターゲットが「到達不能」になるため。他にどうすればこれを行うことができますか?

4

3 に答える 3

8
<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" />

できれば、変換戦略でモデルを乱雑にしないでください。

于 2012-10-30T09:01:20.587 に答える
4

これにはjstl関数を使用できます

含める: <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

< h:inputText value="${fn:toLowerCase(string)}"/> を使用します

または、Java で .toLowerCase() を使用してユーザー名を小文字にすることもできます。

于 2012-10-30T08:37:22.750 に答える
1

この方法でうまくいくはずです。名前を設定するとすぐに、名前は小文字になります。

String name;

public void setName(String name){
 this.name = name.toLowerCase();
}
于 2012-10-30T08:37:15.333 に答える