2013-11-21 5 views
1

Я создал форму 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.

+1

Дайте всем формам, входам и кнопкам фиксированный идентификатор вместо того, чтобы позволить JSF автогенерировать его. – BalusC

+1

Спасибо BalusC за ваше предложение, я дал фиксированные идентификаторы, но все же в такой же ситуации. –

ответ

1

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

commandButton.setProcess("@this"); 

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

commandButton.setProcess("@form"); 

Br. Ramazan