Я создал форму jsf в бэкэнде. Я создал форму, она отображается на экране со значениями успешно. Когда я нажимаю кнопку sumbit, метод being bean вызывается с ActionEvent, но обновленные входные значения не передаются на бэкэнд. Значения объекта сущности bean-компонента не обновляются.Отправка программно созданной формы jsf
Есть ли ошибки? Большое спасибо за помощь,
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;
Edited: Я дал все компоненты фиксированный идентификатор.
Один из моих коллег, подобных этому;
InputText inputText = (InputText)createComponent(InputText.COMPONENT_TYPE);
inputText.setId(fieldAlphanumericWrapper.getName());
inputText.setValueExpression("value", createValueExpression("#{mainBean.selection."+fieldAlphanumericWrapper.getProperty()+"}", Object.class));
return inputText;
My being bean target method;
public void entityUpdateListener(ActionEvent actionEvent) {
TAccount tAccount = (TAccount)getSelection();
System.out.println("tAccount.gettWebsite():"+tAccount.gettWebsite());
}
Основная проблема в том, что на самом деле; Когда я нажимаю commandButton, mainBean.setSelection не вызывается, поэтому резервный объект bean-объекта не обновляется. Я не могу взять обновленный экземпляр объекта с помощью экземпляра actionEvent.
Дайте всем формам, входам и кнопкам фиксированный идентификатор вместо того, чтобы позволить JSF автогенерировать его. – BalusC
Спасибо BalusC за ваше предложение, я дал фиксированные идентификаторы, но все же в такой же ситуации. –