. Это простой пример, демонстрирующий случай.JSF2 commandButton; AJAX или не AJAX, он обновил всю страницу
У вас есть форма с панелью и двумя командами, одна из которых - AJAX, а другая нет. нажав на любой из них, в бэкэнд будет создан InputText и добавлен в Panel.
Мой управляемый компонент:
@ManagedBean
public class DynamicPanel {
private Panel dynmaic;
public Panel getDynmaic() {
return dynmaic;
}
public void setDynmaic(Panel dynmaic) {
this.dynmaic = dynmaic;
}
public String adddynamic(){
InputText text = new InputText();
dynmaic.getChildren().add(text);
text.setValue(text.getId()+" Size= "+ dynmaic.getChildren().size());
return null;
}
public String removeall(){
this.dynmaic.getChildren().clear();
return null;
}
}
Моя страница XHTML
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui" xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<h:form>
<p:panel id="dynamic" binding="#{dynamicPanel.dynmaic}">
</p:panel>
<h:commandButton value="Add with AJAX" id="ajaxBtn" >
<f:ajax onevent="onClick" execute="#{dynamicPanel.adddynamic()}" render="dynamic" />
</h:commandButton>
<h:commandButton value="Add" action="#{dynamicPanel.adddynamic}" />
<h:commandButton value="remove all" action="#{dynamicPanel.removeall}" />
</h:form>
</h:body>
</html>
мой лица-config.xml пуст.
У меня есть три проблемы с кодом выше. Может кто-то прояснит это мне, я новичок в JSF2.
первое, почему обе командные кнопки ведут себя одинаково? нажав на эфир, вы обновите всю страницу.
Вторая проблема заключается в том, почему при нажатии на команду не AJAX командаButton добавляет два входа одновременно?
В-третьих, почему изменение объема управляемого компонента на @SessionScoped приведет к ошибке после загрузки страницы? (Как-то просто загрузить страницу, форма выдает запрос Ajax без меня нажав на CommandButton. Почему?
См. ниже ссылку. Я не понимаю, почему нужно указать execute = "# {dynamicPanel.adddynamic()}" почему бы не "динамический" как значение. http://mkblog.exadel.com/2010/04/learning-jsf-2-ajax-in-jsf-using-fajax-tag/ – Chetan
не могу открыть ссылку – xedus
dont copy paste url .. нажмите на it .. – Chetan