Сохранение значения составного компонента JSF2 - PullRequest
0 голосов
/ 05 сентября 2011

У меня есть таблица данных, которая проходит по списку и имеет столбец значений, который выглядит следующим образом:

<h:dataTable var="assessmentFieldValue" value="#{assessmentBean.assessmentFieldValues}">
    ...
    <ui:fragment rendered="#{assessmentFieldValue.field.type eq 'TEXT'}">
        <h:inputText value="#{assessmentFieldValue.value}" />
    </ui:fragment>
    <ui:fragment rendered="#{assessmentFieldValue.field.type eq 'SLIDER'}">
        <component:slider value="#{assessmentFieldValue.value}" />
    </ui:fragment>
    ...
</h:dataTable>

Так что иногда я получаю стандартный inputText, иногда я получаю свой составной компонент слайдера:

<composite:interface>
    <composite:attribute name="value" />
</composite:interface>

<composite:implementation>
    <script type="text/ecmascript">
        function updateValue(value) {
            $('##{cc.id} span').each(function() {
                $(this).text(value);
            });
        }
    </script>

    <div id="#{cc.id}">
        <input id="sliderComponent" type="range" min="1" max="10"
                value="#{cc.attrs.value}"
                style="float: left"
                onchange="javascript:updateValue(this.value);" />

        <h:outputText id="fieldValue" value="#{cc.attrs.value}"
                style="min-width: 20px; display: block; float: left" />
    </div>
</composite:implementation>

Все это отображается так, как мне бы хотелось (развернуто на JBoss-AS7), но когда я нажимаю кнопку сохранения, связанную с датируемой таблицей, список AssessmentBean.assessmentFieldValue не отражает никаких изменений значений в компоненте слайдера.все же он делает для стандартного inputText.

Кто-нибудь может подсказать, почему изменения в слайдере не возвращают его обратно в бэк-компонент?Спасибо!

1 Ответ

3 голосов
/ 05 сентября 2011

Это потому, что вы использовали простой элемент HTML <input> вместо полноценного компонента ввода JSF, такого как <h:inputText>.Таким образом, значение никоим образом не связано с контекстом JSF.Он рассматривается только как выходное значение простого ванильного шаблона, а не как входное значение.Составной компонент не собирается решить эту проблему.* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * За 100 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *, * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * нуждающаяся библиотека сторонних компонентов, которая уже сделала для вас неприятную работу, например PrimeFaces1008 *).

См. Также:

...