你好,
我有一个输入框,想要去掉任何前导/尾随的空格。我们正在使用JSF,并将输入框绑定到jsp中的后端bean,使用以下代码:
<h:inputText id="inputSN" value="#{regBean.inputSN}" maxlength="10"/>
我的问题是除了验证之外,这个是否可以在JSP中完成?我知道我们也可以使用Handler中的trim() Java函数来完成这个操作,但只是想知道是否有更优雅的方法在JSF中实现它。
谢谢。
你好,
我有一个输入框,想要去掉任何前导/尾随的空格。我们正在使用JSF,并将输入框绑定到jsp中的后端bean,使用以下代码:
<h:inputText id="inputSN" value="#{regBean.inputSN}" maxlength="10"/>
converter-for-class
中,以便您不需要在每个 UIInput
组件上定义它。这样你就可以轻松地将其应用于 java.lang.String
类型的组件。 - BalusCfaces-config.xml
中使用的一个元素。根据规范:_/faces-config/converter_ -- 为此 Web 应用程序创建或替换具有应用程序实例的转换器 id/转换器类或目标类/转换器类对。另外:_"converter-for-class" 元素表示将注册 Converter 类的完全限定类名。_ 更多信息请参见 JSF 规范。 - McDowell根据McDowell和BalusC的建议,您可以创建一个转换器,并使用@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;
}
}
我在这里回答了类似的问题。
基本上,您可以创建自己的组件,它是inputText的副本,可以自动修剪,或者您可以扩展inputText并添加 trim
属性,如果为true,则修剪。
我通过在处理程序中使用trim()函数来解决这个问题,在进行任何处理之前。这似乎是最直接的方法。
public String getTexto() {
return texto != null ? texto.trim() : null;
}