Guice vs AspectJ

я работал с GUice несколько месяцев назад, а теперь, возвращаясь к нему, я обнаружил, что должен перечитать документацию и примеры Guice, чтобы понять, что я сделал с моим кодом. [1233 Однако, когда я смотрю на AspectJ, он слишком интуитивен. Это интуитивно понятное расширение языка Java. Я чувствую, что могу сесть и сразу написать код AspectJ.

Поэтому я испытываю желание отказаться от своей погони за Guice и пойти с AspectJ. Особенно тот факт, что Spring генерирует код AspectJ.

Какие функции Guice существуют над AspectJ, что должно отговорить меня от отказа от Guice?

Почему бы Google не отказаться от Guice и не использовать вместо него AspectJ?

И наоборот, какие функции AspectJ могли бы вдохновить меня отказаться от Guice, кроме его интуитивности?

Если мне будет позволено «сплести» в вопросе здесь, что препятствует слиянию языка Java с AspectJ или предоставляет аналогичные «аспекты» в будущей версии Java?

Примечание : , чтобы вызвать счастливые delete-azillas, я понимаю, что этот вопрос может быть слишком общим - но если бы я знал, какую дополнительную информацию просить, то мне даже не нужно было бы спрашивать, а просто google / bing за то, что я знаю, что я не знаю. Как вы можете видеть, мои знания Guice настолько ухудшились, что я даже не узнаю свой собственный почерк . В своем реальном коде я создаю форму на лету и добавляю к ней две кнопки, одну для отправки и другую для ...

Я просмотрел предыдущие вопросы, но они, похоже, не отвечали на то, что со мной происходит. .
В своем реальном коде я создаю форму на лету и добавляю к ней две кнопки, одну для отправки и другую для другой функции. Для этого я устанавливаю атрибут «type» кнопок «submit» для одного и «button» для другого. Проблема в том, что в Chrome обе кнопки отправляют форму.

Код для формы:

form = $(document.createElement('form')).attr('method', 'get').attr('action', defaults.action).appendTo(object);

Код для кнопок:

form.append(
    $(document.createElement('div')).
        attr('class', classesHash.buttonsContainer).
        append(
            $(document.createElement('button')).
                attr('type', 'submit').
                addClass(classesHash.submitButton).
                attr('title', i18n('Filter')).
                attr('value', i18n('Filter')).
                append(i18n('Filter'))
        ).
        append(
            $(document.createElement('button')).
                attr('type', 'button').
                addClass(classesHash.addButton).
                attr('title', i18n('Add filter')).
                attr('value', i18n('Add filter')).
                append(i18n('Add filter')).
            click(addFilter)
        )
);

Я сделал более простой тест с этим HTML-кодом:

<form action="" method="get"><button id="test">test</button></form>

Когда Chrome не выполняет находит кнопку отправки, любая кнопка отправляет форму.

Следующее не работает, форма отправляется при нажатии кнопки:

$('#test').attr('type', 'button');

Следующее работает, форма не отправляется при нажатии кнопки:

document.getElementById('test').setAttribute('type', 'button');

Форма и кнопка генерируются динамически, и я ' Я использую jQuery, поэтому attr () является наиболее очевидным методом. Что-то не так с ядром jQuery и Chrome? спецификация JS? Он отлично работает в Firefox. Большое спасибо.

6
задан Alejandro García Iglesias 5 November 2010 в 04:36
поделиться

3 ответа

First, the correct approach:
To do what you want in this case, go with the vanilla JavaScript solution, but test it in IE!


The why:
The reason type doesn't work is because it fails in IE (you can't chagne the type of an input after it's added to the DOM, and it's handled in this same way), so jQuery throws an error when you try. It does this specifically for and

12
ответ дан 8 December 2019 в 12:57
поделиться

jQuery у меня отлично работает в Chrome ... все функции, которые я добавил ему сегодня, работают нормально, включая .attr () ...

0
ответ дан 8 December 2019 в 12:57
поделиться

Я не уверен на 100%, о чем вы спрашиваете, но думаю, вы спрашиваете о запрете отправки формы нажатием кнопки в Chrome. Если это так, почему бы не использовать preventDefault ?

$("#test").click(function(e) {
  e.preventDefault();
  //more work here....
});

РЕДАКТИРОВАТЬ:
Я согласен с Ником в том, что для того, чтобы делать то, что вы пытаетесь сделать, используйте простой подход JavaScript. Но в этом случае вы применяете атрибуты к кнопке, которые не имеют смысла (или, по крайней мере, недействительны). Поскольку вы уже используете jQuery, почему бы не обработать его должным образом и не предотвратить действие по умолчанию при нажатии кнопки в форме?

0
ответ дан 8 December 2019 в 12:57
поделиться
Другие вопросы по тегам:

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