JSF - выделение измененных данных в таблице (внутри транзакции). - PullRequest
2 голосов
/ 03 июля 2010

При реализации утилиты ввода данных мне было необходимо выделить поля в таблице, значения которых были изменены этой транзакцией. (Не все поля в таблице обязательны для изменения)

Многократно используемая среда для этого может реплицировать те же функциональные возможности для аналогичных утилит / транзакций без реплицированной стоимости одноразового решения. Это может быть еще более полезным, если его легко добавить к уже существующим потокам. Я ищу реализовать такую ​​структуру в JSF 1.1. Хотя многое из этого может включать изменение / изменение уже разработанных общих компонентов, Я чувствую, что, возможно, существует универсальный подход.

В моем конкретном случае у меня есть многоразовые компоновщики таблиц и навигация / транзакция основа.

Возможные подходы:

  1. Чисто серверная сторона. Кэшируйте данные из предыдущего состояния. Переберите и сделайте сравнение. Каким-либо образом использовать привязки к полям данных, чтобы вернуться к компонентам и запустить их выделение? (Или пусть компоненты ищут компоненты на основе XML-кода навигации и запускают собственную подсветку только для своего поля.)

  2. Больше подходить на стороне клиента. Компоненты редактирования будут знать свое предыдущее состояние и знать значение их ввода. Сравните и активируйте выделение. Не уверен, как это будет передано на следующую страницу / состояние.

Общие идеи и частичные решения. Добро пожаловать Также любая информация о том, если это доступно в других рамках (Grails?). (Самый простой способ сделать что-то - это посмотреть, как это уже сделано!)

Спасибо за любую помощь / предположение / хороший мозговой штурм!

1 Ответ

1 голос
/ 03 июля 2010

Делать это на стороне клиента намного проще и удобнее.

При рассмотрении jQuery JS Framework это так же просто, как:

$(':input').each(function() {
    $(this).attr('data-original', $(this).val()).change(function() {
        $(this).toggleClass('changed', $(this).val() != $(this).attr('data-original'));
    });
});

в сочетании с этим примером CSS:

.changed { background: #fee; }

Вот рабочий SSCCE . Скопируйте и запустите его, чтобы увидеть это сами.

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>SO question 3170317</title>
        <script src="http://code.jquery.com/jquery-latest.min.js"></script>
        <script>
            $(document).ready(function(){
                $(':input').each(function() {
                    $(this).attr('data-original', $(this).val()).change(function() {
                        $(this).toggleClass('changed', $(this).val() != $(this).attr('data-original'));
                    });
                });
            });
        </script>
        <style>
            .changed { background: #fee; }
        </style>
    </head>
    <body>
        <form>
            <input value="change">
            <input value="those">
            <input value="inputs">
         </form>
    </body>
</html>

(если вы хотите, чтобы он слушал каждое нажатие клавиши вместо изменения и размытия, просто замените change часть во 2-й строке JS на keyup, вот живая демонстрация с использованием keyup) * * тысяча двадцать-один

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