JAXB XJC Можно ли запретить создание комментариев в сгенерированных классах?

Я попытаюсь прокомментировать каждый из пунктов маркированного списка, которые Вы упомянули:

Ваши основные страницы все еще существуют в MVC и используются для обеспечения последовательного расположения сайту. не очень новый там.

Ваши страницы содержания станут представлениями в мире MVC. Они все еще предоставляют те же предметные области Вашим основным страницам.

eventhandling веб-форм не должен использоваться в MVC, вместо этого Ваши Классы контроллера и их методы действия обработают загрузку Ваших данных в "модель", которая передается представлению.

, Хотя привязка данных стиля веб-формы возможна в MVC, я нахожу, что это не оптимальное решение. Лучше, чтобы поместить Ваши данные в образцовый класс и сильно ввести Ваше представление так, чтобы у Вас был прямой доступ к той модели. Тогда просто вопрос использования <%= ViewData.Model.SomeProperty %> синтаксис, чтобы получить доступ к Вашим данным и отобразить его в желаемых местоположениях. Что касается состояния отображения, моя рекомендация состоит в том, чтобы забыть, что это даже существует.

Помнят, что одно из преимуществ использования MVC - то, что Вы управляете HTML, который Вы отправляете клиенту. Объятие, что питание и попытка найти решения, которые позволяют Вам обеспечивать тот контроль. Средства управления веб-формой пытаются скрыться, HTML от Вас и как таковой делает более трудным настроить HTML, когда Вы должны.

я настоятельно рекомендовал бы JQuery или одну из других столь же мощных библиотек JavaScript. Но учитесь использовать их, чтобы получить доступ к HTML DOM непосредственно и избежать идентификатора, искажающего проблемы средств управления веб-формой.

можно использовать jQuery, чтобы сцепиться в выпадающий выбор на стороне клиента и отправить стандарт или запросы стиля ajax. Те запрашивают, может возвратить новые страницы, перенаправления, фрагменты HTML или даже данные JSON, которые могут использоваться для обновления существующей страницы.

Сессия asp.net может использоваться по мере необходимости.

28
задан Matt 23 February 2011 в 16:11
поделиться

3 ответа

Я знаю, что это спустя 2 года после факта, но поскольку классы генерируются, они не обязательно нужны в SVN. В SVN должна присутствовать схема или любой другой файл, который вы используете в качестве источника для генерации классов. Пока у вас есть источник и инструменты для генерации классов, классы в SVN являются избыточными и, как вы видели, проблемными в SVN или любой SCCS. Поэтому поместите файл схемы в SVN и полностью исключите проблему.

4
ответ дан 28 November 2019 в 03:37
поделиться

Я также хочу, чтобы имел текстовый заголовок с предупреждением о том, что классы были сгенерированы автоматически и не должны изменяться вручную, но поскольку я помещаю такие файлы в int git, я не хочу, чтобы там всегда изменялась дата поколения .

Этот заголовок сгенерирован в методе com.sun.tools.xjc.Options # getPrologComment . Так что по сути это называется:

return Messages.format(
            Messages.FILE_PROLOG_COMMENT,
dateFormat.format(new Date()));

Messages.FILE_PROLOG_COMMENT определяется как Driver.FilePrologComment. С дальнейшей отладкой я обнаружил, что он использует стандартные пакеты локализации Java.

Итак, чтобы изменить формат заголовка, мы просто можем предоставить наши свойства для переопределения значений из MessageBundle.properties .

Мы можем сделать это двумя способами:

  1. Просто скопируйте этот файл (из репозитория по ссылке или просто из фляги соответствующей версии, которую вы используете) в src/main/resources/com/sun/tools/xjc/MessageBundle.properties в вашем проекте и измените ключ Driver.FilePrologComment, как хотите.
  2. Но в первом случае есть некоторые недостатки - сначала вы копируете и вставляете много кода, который вы не меняете, во-вторых, вы должны обновить его при обновлении зависимости XJC. Поэтому лучше я рекомендую поместить его в файл src/main/resources/com/sun/tools/xjc/MessageBundle_en.properties (примечание _en суффикс в имени файла) и размещать там только те свойства, которые вы действительно хотите изменить. Примерно так:
# We want header, but do NOT willing there `Generated on: {0}` part because want commit them into git!
Driver.FilePrologComment = \
    This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.4.0-b180830.0438 \n\
    See <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a> \n\
    Any modifications to this file will be lost upon recompilation of the source schema. \n

Убедитесь, что этот файл находится в classpath компилятора, особенно если вы вызываете его из некоторых плагинов.

1121 Это обычный механизм перевода. См. Связанный ответ: Английские комментарии JAXB в сгенерированном файле

1
ответ дан 28 November 2019 в 03:37
поделиться

Если вы используете ant , следующий фрагмент может быть полезен для замены комментариев:

<replaceregexp
        match="^// Generated on:.*$" 
        replace="// Generated on: [date removed]"
        byline="true">
    <fileset dir="src">
        <include name="**/*.java"/>
    </fileset>
</replaceregexp>
3
ответ дан 28 November 2019 в 03:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: