2013-11-21 84 views
1

我已經在支持bean上創建了jsf表單。我已經創建了表單,它已成功顯示在屏幕上。當我點擊sumbit按鈕時,用ActionEvent調用backing bean方法,但更新後的輸入值不會提交給後端。 Backign bean實體對象值不會更新。正在提交以編程方式創建的jsf表格

有問題嗎?非常感謝您的幫助,

Br。 Ramazan

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; 

編輯:我給所有組件一個固定的ID。

我的一個組合成員就是那樣的;

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

我的支持bean的target方法;

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

其實主要問題是:當我按下commandButton時,mainBean.setSelection沒有被調用,所以支持bean對象沒有更新。我不能通過actionEvent實例更新對象實例。

+1

給所有表單,輸入和按鈕一個固定的ID,而不是讓JSF自動生成它。 – BalusC

+1

感謝BalusC爲您的建議,我給了固定ID,但仍處於相同的情況。 –

回答

1

我找到解決辦法,問題原因是這條線;

commandButton.setProcess("@this"); 

我改變了這個,問題解決了。

commandButton.setProcess("@form"); 

Br。 Ramazan