hibernate - 如果数据在进入数据库之前需要修剪,您将其放入哪一层

标签 hibernate jsf

所有数据在进入数据库之前都需要进行修剪。我目前使用 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/

相关文章:

java - hibernate 问题

java - Hibernate 聚合 + Spring MVC

java - 创建类路径资源中定义的名称为 'entityManagerFactory' 的 bean 时出错(初始化方法调用失败)

java - 使用 URL 参数的 JSF Managed Bean 方法调用

jsf - Primefaces p :messages won't show first FacesMessage

java - FindBugs 不检测 SQL 注入(inject)

java - 与编码相关的数据库连接错误

jsf - 如何在 PrimeFaces 中的芯片中使用属性自动完成

java - 使用 JSF 的自定义 500 错误页面 - 是否提供完整的错误消息?

java - JSF 将动态 UI 数据传递到服务器