2010-01-08 39 views
7

嗨,JSF修整空白

我有一個輸入字段,我想修剪任何前導/尾隨空格。我們使用JSF和使用輸入字段綁定到後臺bean在jsp:

<h:inputText id="inputSN" value="#{regBean.inputSN}" maxlength="10"/> 

我的問題是,除了可以驗證這在JSP做什麼?我知道我們也可以在Handler中使用trim()java函數來做到這一點,但只是想知道在JSF中是否有更好的方法來實現這一點。

謝謝。

+0

我解決了這個問題,只需在處理器中使用trim()函數進行任何處理。感謝McDowell提出的另一個想法。 – msharma

回答

6

您可以使用Convertertutorial)。

+3

並用'converter-for-class'註冊'java.lang.String',這樣你就不需要在每個'UIInput'組件上定義它。 – BalusC

+0

這是什麼類的轉換器?聽起來很酷 – Martlark

+1

@Martlark - 它是'faces-config.xml'中使用的元素。從規範:_/faces-config/converter - 使用此Web應用程序的Application實例創建或替換轉換器ID /轉換器類或目標類/轉換器類對。_另外:_「converter-for-class」元素表示Converter類將被註冊的完全限定類名._有關更多信息,請參閱JSF規範。 – McDowell

1

我解決了這個問題,只需在處理器中使用trim()函數進行任何處理。它似乎是這樣做的最直接的方式。

+2

如果這是您認爲正確的答案,您應該將其標記爲已接受的答案。 –

+0

什麼處理程序? –

2

我回答了類似的問題here

基本上你可以創建自己的組件是inputText的副本自動修剪,或可以擴展的inputText並添加trim屬性,如果真的修剪。

4

正如McDowell和BalusC所建議的那樣,您可以創建一個Converter,並使用@FacesConvert註釋爲String類註冊它。然後在getAsObject方法中檢查UIComponent類型並僅對HtmlInputText組件應用修剪。

@FacesConverter(forClass = String.class) 
public class StringTrimConverter implements Serializable, javax.faces.convert.Converter { 

    @Override 
    public Object getAsObject(FacesContext context, UIComponent cmp, String value) { 

     if (value != null && cmp instanceof HtmlInputText) { 
      // trim the entered value in a HtmlInputText before doing validation/updating the model 
      return value.trim(); 
     } 

     return value; 
    } 

    @Override 
    public String getAsString(FacesContext context, UIComponent cmp, Object value) { 

     if (value != null) { 
      // return the value as is for presentation 
      return value.toString(); 
     } 
     return null; 
    } 

} 
+1

或者,如果您不想自己編寫代碼,請參閱http://showcase.omnifaces.org/converters/TrimConverter –