你好,
我有一个输入字段,我想在其中修剪任何前导/尾随空格。我们正在使用 JSF 并将输入字段绑定到 jsp 中的支持 bean,使用:
<h:inputText id="inputSN" value="#{regBean.inputSN}" maxlength="10"/>
我的问题是,除了验证之外,这可以在 jsp 中完成吗?我知道我们也可以使用处理程序中的 trim() java 函数来做到这一点,但只是想知道在 JSF 中是否有更优雅的方法来实现这一点。
谢谢。
你好,
我有一个输入字段,我想在其中修剪任何前导/尾随空格。我们正在使用 JSF 并将输入字段绑定到 jsp 中的支持 bean,使用:
<h:inputText id="inputSN" value="#{regBean.inputSN}" maxlength="10"/>
我的问题是,除了验证之外,这可以在 jsp 中完成吗?我知道我们也可以使用处理程序中的 trim() java 函数来做到这一点,但只是想知道在 JSF 中是否有更优雅的方法来实现这一点。
谢谢。
正如 McDowell 和 BalusC 所建议的,您可以创建一个 Converter,并使用 String 类的 @FacesConvert 注释注册它。然后在 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
修剪的属性(如果为真)。
在进行任何处理之前,我只使用处理程序中的 trim() 函数解决了这个问题。这似乎是最直接的方式。
一个主意:
public String getTexto() {
return texto != null ? texto.trim() : null;
}