嗨,JSF修整空白
我有一個輸入字段,我想修剪任何前導/尾隨空格。我們使用JSF和使用輸入字段綁定到後臺bean在jsp:
<h:inputText id="inputSN" value="#{regBean.inputSN}" maxlength="10"/>
我的問題是,除了可以驗證這在JSP做什麼?我知道我們也可以在Handler中使用trim()java函數來做到這一點,但只是想知道在JSF中是否有更好的方法來實現這一點。
謝謝。
嗨,JSF修整空白
我有一個輸入字段,我想修剪任何前導/尾隨空格。我們使用JSF和使用輸入字段綁定到後臺bean在jsp:
<h:inputText id="inputSN" value="#{regBean.inputSN}" maxlength="10"/>
我的問題是,除了可以驗證這在JSP做什麼?我知道我們也可以在Handler中使用trim()java函數來做到這一點,但只是想知道在JSF中是否有更好的方法來實現這一點。
謝謝。
並用'converter-for-class'註冊'java.lang.String',這樣你就不需要在每個'UIInput'組件上定義它。 – BalusC
這是什麼類的轉換器?聽起來很酷 – Martlark
@Martlark - 它是'faces-config.xml'中使用的元素。從規範:_/faces-config/converter - 使用此Web應用程序的Application實例創建或替換轉換器ID /轉換器類或目標類/轉換器類對。_另外:_「converter-for-class」元素表示Converter類將被註冊的完全限定類名._有關更多信息,請參閱JSF規範。 – McDowell
我解決了這個問題,只需在處理器中使用trim()函數進行任何處理。它似乎是這樣做的最直接的方式。
如果這是您認爲正確的答案,您應該將其標記爲已接受的答案。 –
什麼處理程序? –
我回答了類似的問題here
基本上你可以創建自己的組件是inputText的副本自動修剪,或可以擴展的inputText並添加trim
屬性,如果真的修剪。
正如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;
}
}
或者,如果您不想自己編寫代碼,請參閱http://showcase.omnifaces.org/converters/TrimConverter –
我解決了這個問題,只需在處理器中使用trim()函數進行任何處理。感謝McDowell提出的另一個想法。 – msharma