所有数据在进入数据库之前都需要进行修剪。我目前使用 Hibernate 和 JSF。 你会把这个逻辑放在哪里?在 hibernate 实体 bean 或 JSF 支持 bean 中? 有什么优点和缺点。还有其他建议吗?
最佳答案
在 View 侧进行。您只需创建一个 JSF Converter
对于 String.class
.
@FacesConverter(forClass=String.class)
public class StringTrimmer implements Converter {
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
return value.trim();
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
return value.toString();
}
}
或者当您仍在使用 JSF 1.2 时,请删除 @FacesConverter
并按如下方式在您的 faces-config.xml
中注册它。
<converter>
<converter-for-class>java.lang.String</converter-for-class>
<converter-class>com.example.converters.StringTrimmer</converter-class>
</converter>
无论哪种方式,它将应用于 String
类型的所有输入属性,而无需更改任何其他内容。
由于内部设计原因,这在 JSF 1.1 或更早版本上是不可能的。
关于hibernate - 如果数据在进入数据库之前需要修剪,您将其放入哪一层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5185088/