【问题标题】:Primefaces DynaForm always return null valuesPrimefaces DynaForm 总是返回空值
【发布时间】:2013-11-17 12:41:18
【问题描述】:

当使用primefaces dynaform(0.7.1 版)时,我总是得到 null 作为从动态表单返回的值。

我的 xhtml:

<h:form id="messageParamsForm" styleClass="formBlock dynaForm">
            <pe:dynaForm id="dynaForm" value="#{editParametersBean.formModel}" var="data">
                <pe:dynaFormControl type="textfield" for="textfield">
                    <p:inputText id="txt" value="#{data.value}" />
                </pe:dynaFormControl>

                <pe:dynaFormControl type="grouplabel" for="grouplabel">

                </pe:dynaFormControl>

                <pe:dynaFormControl type="separator" for="separator">
                    <p:separator />
                </pe:dynaFormControl>

                <pe:dynaFormControl type="checkbox" for="checkbox">
                    <p:selectBooleanCheckbox id="checkbox" value="#{data.value}"/>
                </pe:dynaFormControl>
            </pe:dynaForm>
<div class="buttonsBlock">
                <p:commandButton value="#{msg['button.apply']}"
                                 update="@form"
                                 action="#{editParametersBean.save()}"
                                 styleClass="primaryButton"/>
        </div>
        </h:form>

这就是我创建表单模型的方式

formModel = new DynaFormModel();
        for (MessageParamValueDto parameterValue : messageParameterValues) {
            DynaFormRow row = formModel.createRegularRow();
            DynaFormLabel label = row.addLabel(parameterValue.getParameter().getLabel(), 1, 1);
            DynaFormControl control = row.addControl(parameterValue, parameterValue.getParameter().getType(), 1, 1);
            label.setForControl(control);
        }

Bean 是视图范围的。

这就是 DTO

public class MessageParamValueDto {

    private MessageParameter parameter;
    private Object value;

    public MessageParamValueDto(MessageParameter parameter, Object value) {
        this.parameter = parameter;
        this.value = value;
    }

    public MessageParamValueDto() {
        // NO CODE
    }

    public MessageParameter getParameter() {
        return parameter;
    }

    public void setParameter(MessageParameter parameter) {
        this.parameter = parameter;
    }

    public Object getValue() {
        return value;
    }

    public void setValue(Object value) {
        this.value = value;
    }
}

当我在保存方法中处理表单时,所有 dto 都具有空值。 我有时也会得到Component ID ... has already been found in the view. 但它完全是不确定的。

【问题讨论】:

    标签: jsf-2 primefaces primefaces-extensions


    【解决方案1】:

    您认为您为什么要处理该表单? process 属性的值默认为@this。您应该将进程指向 pe:dynaForm。试试 process=":messageParamsForm:dynaForm" 或 process="dynaForm"。

    【讨论】:

      猜你喜欢
      • 2016-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-20
      • 2012-11-12
      • 2014-06-24
      • 2019-12-05
      相关资源
      最近更新 更多