首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Primefaces DynaForm始终返回空值

Primefaces DynaForm始终返回空值
EN

Stack Overflow用户
提问于 2013-11-06 18:16:44
回答 1查看 611关注 0票数 1

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

我的xhtml:

代码语言:javascript
复制
<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>

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

代码语言:javascript
复制
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

代码语言:javascript
复制
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.,但它是完全不确定的。

EN

回答 1

Stack Overflow用户

发布于 2013-11-07 06:12:39

你认为你为什么要处理表单?默认情况下,process属性的值为@this。您应该将process指向pe:dynaForm。试试process=":messageParamsForm:dynaForm“或process="dynaForm”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19809347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档