Primefaces DynaForm始终返回空值

时间:2013-11-06 10:16:44

标签: jsf-2 primefaces primefaces-extensions

使用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;
    }
}

当我在save方法中处理表单时,所有dtos都有空值。 我有时也得Component ID ... has already been found in the view.但这完全是不确定的。

1 个答案:

答案 0 :(得分:1)

为什么你认为你处理表格? process属性的值是@this默认值。你应该将过程指向pe:dynaForm。尝试process =“:messageParamsForm:dynaForm”或process =“dynaForm”。