首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PF DynaForm中的commandButton问题

PF DynaForm中的commandButton问题
EN

Stack Overflow用户
提问于 2013-01-03 15:59:34
回答 1查看 916关注 0票数 0

我对JSF和Primefaces有点陌生,只是在学习一本书,并尝试在实践中学习;-)这样做我遇到了一个问题,显然我不会一个人解决这个问题。

下面的xhtml代码

代码语言:javascript
复制
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      xmlns:pe="http://primefaces.org/ui/extensions">

    <h:head>
        <title>My Testpage</title>
    </h:head>
    <h:body>

        <h:panelGroup>

            <pe:dynaForm id="form_kairos" value="#{kairosController.model}" var="m">

                <pe:dynaFormControl type="input" for="txt">  
                    <p:inputText cols="80" id="txt" value="#{m.value}" required="true"/>  
                </pe:dynaFormControl> 

                <f:facet name="buttonBar">  
                    <p:commandButton value="Submit" 
                                     action="#{kairosController.submitForm}"
                                     style="margin-left: 5px;"/>

                </f:facet>
            </pe:dynaForm>

        </h:panelGroup>

    </h:body>
</html>

如预期的那样显示我的输入栏和提交按钮--很好!但是按下按钮并不能跳转到submitForm方法:o。

我的Bean代码尽可能简单(目前如此),如下所示:

代码语言:javascript
复制
import de.hlg.kairos.TextInput;
import java.io.Serializable;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import org.primefaces.extensions.model.dynaform.DynaFormControl;
import org.primefaces.extensions.model.dynaform.DynaFormLabel;
import org.primefaces.extensions.model.dynaform.DynaFormModel;
import org.primefaces.extensions.model.dynaform.DynaFormRow;

@ManagedBean
@SessionScoped
public class KairosController implements Serializable {

    private DynaFormModel model;  
    private TextInput myValue;

    public KairosController() {

        model = new DynaFormModel();  
        myValue = new TextInput("myValue");
        DynaFormRow row = model.createRegularRow();
        DynaFormLabel label11 = row.addLabel("my label", 1, 1);  
        DynaFormControl control12 = row.addControl(myValue, "input", 1, 1);  
        label11.setForControl(control12);  

    }

    public DynaFormModel getModel() {
        Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, "getModel()");
        return model;
    }

    public String submitForm() {
        Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, "submitForm()");
        return null;
    }
}

我已经读过一些关于嵌套表单的帖子,它们似乎不适用于commandButton。其他人说,ajax="false“可以帮助按钮,但在我的示例中,这些提示并没有帮助,所以我认为我的代码可能存在其他问题(对于更有经验的人来说可能非常明显:lol:)。

不幸的是,我必须指出,我在PFE showcase中看到了完全相同的行为,因此我无法将其与工作的东西进行比较。

有什么建议或工作示例可以让dynaForm组件中的commandButton在没有ajax的情况下工作吗?

干杯,乔恩

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-03 19:44:19

我仔细研究了您的示例以及primeface扩展中的动态"form"。dynaForm未生成form。它“只”生成一个table。因此,当您尝试通过向commandButton添加ajax=false属性来使其成为非ajax时,commandButton将报告周围的form不存在。

添加周围的form元素。那么你的请求应该以你所期望的方式工作。

代码语言:javascript
复制
<h:form id="mainForm">
    <pe:dynaForm id="form_kairos" value="#{kairosController.model}" var="m">

        <pe:dynaFormControl type="input" for="txt">
        <p:inputText cols="80" id="txt" value="#{m.value}" required="true" />
        </pe:dynaFormControl>

        <f:facet name="buttonBar">
            <p:commandButton id="commandButton" value="Submit" ajax="false"
             actionListener="#{kairosController.submitForm}" style="margin-left: 5px;" />

        </f:facet>
    </pe:dynaForm>
</h:form>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14135024

复制
相关文章

相似问题

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