如何从多个dynaforms中获取值?

时间:2016-07-22 21:56:31

标签: jsf primefaces primefaces-extensions dynamicform

我一直在关注本教程

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

我已经能够创建树Dynaform对象并将其发送到页面。但是我很难获得用户点击提交后输入的值。我希望能够在backbean中获取这些值。

这是提交按钮

<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中的值。谁能解释一下?我尝试查找一些教程,但我没有找到任何解释。

感谢。

1 个答案:

答案 0 :(得分:0)

它与普通的JSF相同。

你需要一个bean中的变量,它的getter和setter。 然后,将它与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;  
}  

}