Использует ли JSF List или Array для внутреннего использования? - PullRequest
1 голос
/ 14 ноября 2011

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

Я имею в виду случаи, когда списки / массивы передаются в JSF, например:

<ui:repeat value="#{bean.array}" />

Спасибо!

1 Ответ

3 голосов
/ 14 ноября 2011

JSF ничего не конвертирует. Оба одинаково хорошо поддерживаются. JSF просто поместит значение в подходящую реализацию DataModel, чтобы отслеживать итерированную строку. См. Также исходный код UIRepeat (ниже от Мохарры):

private DataModel getDataModel() {
    if (this.model == null) {
        Object val = this.getValue();
        if (val == null) {
            this.model = EMPTY_MODEL;
        } else if (val instanceof DataModel) {
            this.model = (DataModel<Object>) val;
        } else if (val instanceof List) {
            this.model = new ListDataModel<Object>((List<Object>) val);
        } else if (Object[].class.isAssignableFrom(val.getClass())) {
            this.model = new ArrayDataModel<Object>((Object[]) val);
        } else if (val instanceof ResultSet) {
            this.model = new ResultSetDataModel((ResultSet) val);
        } else {
            this.model = new ScalarDataModel<Object>(val);
        }
    }
    return this.model;
}

Просто выберите любой тип значения, который лучше и проще поддерживать. Профиль при необходимости. Простые массивы имеют меньший объем памяти, но их также сложнее поддерживать (например, добавление / удаление элементов должно происходить на System#arrayCopy()). Это может иметь смысл только для статических коллекций, но не для динамических коллекций.

Если вы хотите пойти на преждевременную оптимизацию, то вам, вероятно, вообще не следует использовать JSF, а просто обычный ванильный JSP / Servlet и работать только с примитивами и простыми массивами:)

В наши дни память дешева.

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