2016-07-22 120 views
1

我一直在關注這個教程如何獲取多個dynaforms的值?

http://www.primefaces.org/showcase-ext/sections/dynaform/basicUsage.jsf

我已經能夠創建樹Dynaform的對象,並將其發送到頁面。但是我很難獲得用戶點擊提交後輸入的值。我希望能夠在大豆中獲得這些值。

這裏提交按鈕

<p:commandButton value="Submit" action="#{dynaFormController.submitForm}" 
          process="dynaForm" update=":mainForm:dynaFormGroup :mainForm:inputValues" 
          oncomplete="handleComplete(xhr, status, args)"/> 
<p:commandButton type="reset" value="Reset" style="margin-left: 5px;"/> 

我知道提交調用此函數

<h:outputScript id="dynaFormScript" target="body"> 
/* <![CDATA[ */ 
    function handleComplete(xhr, status, args) { 
     if(args && args.isValid) { 
      PF('inputValuesWidget').show(); 
     } else { 
      PF('inputValuesWidget').hide(); 
     } 
    } 
/* ]]> */ 
</h:outputScript> 

然後在豆有:

public String submitForm() { 
     FacesMessage.Severity sev = FacesContext.getCurrentInstance().getMaximumSeverity(); 
     boolean hasErrors = (sev != null && (FacesMessage.SEVERITY_ERROR.compareTo(sev) >= 0)); 

     RequestContext requestContext = RequestContext.getCurrentInstance(); 
     requestContext.addCallbackParam("isValid", !hasErrors); 

     return null; 
    } 

我怎麼能夠得到來自提交表單的字段值? 我有3個dynaforms,我想提交它們並能夠獲取後端bean中的值。誰能解釋一下?我試圖查找一些教程,但我沒有找到任何解釋。

謝謝。

回答

0

和普通的JSF一樣。

你需要在你的bean,它的getter和setters中有一個變量。然後,您將它與DynaFormControl進行比較。

@ManagedBean 
@SessionScoped 
public class DynaFormController implements Serializable { 

private static final long serialVersionUID = 1L; 
private DynaFormModel model; 
private BookProperty bookProperty; 

public String getBookProperty() { 
    return bookProperty; 
} 
public void setBookProperty(BookProperty bookProperty) { 
    this.bookProperty = bookProperty; 
} 

public String submitForm() { 
    //your code 

    List<DynaFormControl> controls = model.getControls(); 
    for (DynaFormControl control : controls) { 
     if(control.getData() instanceof BookProperty) { 
      BookProperty bp = (BookProperty) c.getData(); 
      //use the object     
     } 
    }  

    return null; 
} 

}