【问题标题】:How to get the values from multiple dynaforms?如何从多个 dynaforms 中获取值?
【发布时间】:2016-07-22 21:56:31
【问题描述】:

我一直在关注这个教程

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>

那么在bean中我们有:

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

谢谢。

【问题讨论】:

    标签: jsf primefaces primefaces-extensions dynamicform


    【解决方案1】:

    它与普通的 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;  
    }  
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-29
      • 2021-05-24
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 2021-11-21
      • 2011-07-23
      • 1970-01-01
      相关资源
      最近更新 更多