【问题标题】:Problems with commandButton in a PF DynaFormPF DynaForm 中的 commandButton 问题
【发布时间】:2013-01-03 07:59:34
【问题描述】:

我对 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 方法 :o .

我的 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 showcase 完全相同的行为,所以我无法与工作的东西进行比较。

有任何建议或工作示例可以使命令按钮在 dynaForm 组件中无需 ajax 即可工作吗?

干杯, 乔恩

【问题讨论】:

  • 这是否意味着展示柜不适合您?那你的浏览器一定有问题?
  • 我也责怪我的浏览器(这是最新的 Firefox)并尝试使用 IE,但也没有成功。是的,展示柜不适合我。详细地说,这意味着,当我在 submitForm 方法中添加断点(或者只是添加一个 Logger 行,如上所示)时,永远不会到达该行。浏览器中的可视化看起来应该是这样的。
  • @Jens:但是顺便说一句:如果展示柜对我有用,那么我不得不问我的代码与展示柜有什么不同?!
  • 所以陈列柜基本上可以工作(如果它看起来像它应该的样子)。你在哪里添加断点?你在用日食吗?如果是这样,您确定调试器可以正常工作吗?能不能在别处设置断点,调试器停止?
  • 我理解您对问题的兴趣,并且可以确保您正确使用调试器(对 JSF 来说是新手,对 java 来说根本不是 ;-)。

标签: jsf-2 primefaces primefaces-extensions


【解决方案1】:

我仔细查看了您的示例以及 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>

【讨论】:

  • 非常感谢,这行得通。我以为 dynaForm 组件是一个表单,但没有检查!你真的让我很开心!谢谢!
猜你喜欢
  • 2010-12-26
  • 2012-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-20
  • 2013-11-17
  • 1970-01-01
相关资源
最近更新 更多