Отправка программно созданной формы jsf

Я создал jsf-форму при поддержке bean-компонента. Я создал форму, она успешно отображается на экране со значениями. Когда я нажимаю кнопку sumbit, вызывается метод резервного компонента с помощью ActionEvent, но обновленные входные значения не отправляются в серверную часть. Значения объекта сущности бина Backign не обновляются.

Что-то не так? Большое спасибо за вашу помощь,

Br. Рамазан

HtmlForm form = new HtmlForm();
form.setId(appletWrapper.getName()+"_FORM");

PanelGrid panelGrid = (PanelGrid)createComponent(PanelGrid.COMPONENT_TYPE);
form.getChildren().add(panelGrid);
panelGrid.setColumns(4);
panelGrid.setId(appletWrapper.getName()+"_FORM_PANEL");

for (FieldWrapper fieldWrapper : appletWrapper.getFields()) {
    panelGrid.getChildren().add(new UIFieldLabel(fieldWrapper).component(entities));
    panelGrid.getChildren().add(newFieldComponent(fieldWrapper, entities));
}

HtmlPanelGroup panelGroup = new HtmlPanelGroup();
panelGroup.setId(appletWrapper.getName()+"_PANEL_GROUP");
panelGrid.getFacets().put("footer", panelGroup);

CommandButton commandButton = new CommandButton();
panelGroup.getChildren().add(commandButton);
commandButton.setId(appletWrapper.getName()+"_UPDATE");
commandButton.setAjax(true);
commandButton.setValue("update");
commandButton.setProcess("@this");
commandButton.setType("submit");
MethodExpression updateEntityME = createMethodExpression("#{mainBean.entityUpdateListener}", null, new Class[] {ActionEvent.class });
commandButton.addActionListener(new MethodExpressionActionListener(updateEntityME));

return form;

Отредактировано: я дал всем компонентам фиксированный идентификатор.

Один из моих компонентов имел такой генарат;

InputText inputText = (InputText)createComponent(InputText.COMPONENT_TYPE);
inputText.setId(fieldAlphanumericWrapper.getName());
inputText.setValueExpression("value", createValueExpression("#{mainBean.selection."+fieldAlphanumericWrapper.getProperty()+"}", Object.class));
return inputText;

Мой целевой метод поддержки bean;

public void entityUpdateListener(ActionEvent actionEvent) {
    TAccount tAccount = (TAccount)getSelection();
    System.out.println("tAccount.gettWebsite():"+tAccount.gettWebsite());
}

Основная проблема в том, что на самом деле; Когда я нажимаю commandButton, mainBean.setSelection не вызывается, поэтому поддерживающий объект bean-компонента не обновляется. Я не могу получить обновленный экземпляр объекта через экземпляр actionEvent.


person Sertan Ramazan Pekin    schedule 21.11.2013    source источник
comment
Дайте всем формам, входам и кнопкам фиксированный идентификатор вместо того, чтобы разрешать JSF создавать его автоматически.   -  person BalusC    schedule 21.11.2013
comment
Спасибо, BalusC за ваше предложение, я дал фиксированные идентификаторы, но все еще в той же ситуации.   -  person Sertan Ramazan Pekin    schedule 21.11.2013


Ответы (1)


Я нашел решение, причиной проблемы была эта строка;

commandButton.setProcess("@this");

Я перешел на это, и проблема решена.

commandButton.setProcess("@form");

Br. Рамазан

person Sertan Ramazan Pekin    schedule 22.11.2013