jsf 2 - PF动态表单中命令按钮的问题



我对JSF和Primefaces有点陌生,只是学习一本书,并尝试通过做来学习;-)这样做,我就遇到了一个问题,显然我一个人无法解决。

下面的xhtml代码
<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方法:0 .

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

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展示,所以我不能比较一些工作。

任何建议或工作的例子,使一个命令按钮工作没有ajax在一个dynaForm组件?

欢呼,Joern

我仔细研究了您的示例以及来自primeface扩展的动态"form"。dynaForm没有生成form。它"只"产生一个table。因此,当您尝试通过向其添加ajax=false属性来使commandButton非ajax时,commandButton将抱怨没有周围的form存在。

添加周围的form元素。然后你的请求应该按照你期望的方式工作。

<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>

相关内容

  • 没有找到相关文章

最新更新