если данные должны быть обрезаны перед отправкой в ​​базу данных, какой уровень вы положите в - PullRequest
2 голосов
/ 03 марта 2011

все данные должны быть обрезаны перед отправкой в ​​базу данных.В настоящее время я использую спящий с JSF.где бы вы поместили эту логику?в компоненте Hibernate, или в компонентах JSF?какие плюсы и минусы.есть ли другие предложения?

Ответы [ 3 ]

4 голосов
/ 03 марта 2011

Сделайте это в боковом обзоре. Вы можете просто создать 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 или старше из-за внутреннего дизайна.

1 голос
/ 04 марта 2011

Я не соглашусь с другими ответами на этот вопрос. У меня была такая же ситуация в проекте, и наше решение состояло в том, чтобы создать собственное отображение Hibernate под названием «TrimmedString», которое мы по умолчанию применили ко всем свойствам String в проекте. Это оказалось лучше, чем применять эту логику к какой-либо части нашего приложения, потому что на самом деле не в его заботе обрезать данные (это верный код, а не бизнес). Кроме того, применение его непосредственно в качестве Hibernate позволяет избежать проблем, если у вас есть два способа ввода данных в вашу систему (например, Web UI и WebService).

1 голос
/ 03 марта 2011

Если нет причин оставлять данные в любом месте приложения, я бы обрезал их в точке ввода данных. Это избавляет вас от необходимости обрезать значения в разных областях приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...