Для того, чтобы ответить на название вашего вопроса, в разница между ними является то, что форма представить посылает всю форму и перезагружает вид, в то время как выполнение формы Ajax также представляет всю форму, но с помощью запроса AJAX, который может используется для отображения только определенной части представления до того, как произойдет ответ.
Относительно к содержанию вопроса, форма представить, нажав Enter ключ реализуется в основных браузерах для одного входа формирует. Не нужно javascripting событие onkeypress
, так как браузер обнаружит это и отправит форму по умолчанию.
Так следующий кусок кода имеет тот же результат для стороне сервера, либо нажав Отправить кнопку или Enter Кеу: value
атрибут быть установлен. Обратите внимание, что во втором виде, где <h:inputText />
имеет поведение ajax, значение h:outputText
также обновляется (даже не указывается атрибут render
) при попадании в . Введите ключ, это связано с тем, что полный запрос отправки приоритет над ajax запрос, и вся страница будет перезагружена. Только Google Chrome говорит об этом конфликте: httpError: Http Transport возвратил код состояния 0. Обычно это результат смешивания ajax и полных запросов.
Полный запрос:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<h:head />
<body>
<h:form>
<h:inputText value="#{bean.value}" />
<h:commandButton value="Send" />
</h:form>
</body>
</html>
Ajax запрос:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<h:head />
<body>
<h:form>
<h:inputText value="#{bean.value}">
<f:ajax />
</h:inputText>
<h:outputText value="Echo: #{bean.value}" />
</h:form>
</body>
</html>
Когда форма имеет более чем поле ввода вы можете использовать такой яваскрипт проверку для отправки если нет кнопки отправки, используя полный запрос на отправку. Если есть, делать это не нужно.
Наконец, если вы хотите, чтобы выполнить запрос AJAX при ударе значения модели ключа и обновления, используйте onkeypress
атрибут:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<h:head />
<body>
<h:form>
<h:inputText value="#{bean.value}"
onkeypress="if (event.keyCode == 13) {onchange(); return false; }">
<f:ajax render="echo" />
</h:inputText>
<h:inputText value="#{bean.value2}" />
<h:outputText id="echo" value="Echo: #{bean.value}" />
</h:form>
</body>
</html>
Напомним, что желательно использовать кнопку отправки для обычной доступности важно.
Смотрите также: