0

私は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 ショーケースとまったく同じ動作が見られるため、動作するものと比較することはできません。

dynaForm コンポーネントで ajax なしで commandButton を機能させる提案や実例はありますか?

乾杯、ジョーン

4

1 に答える 1

0

私はあなたの例と"form"、primeface拡張機能からのダイナミックを詳しく調べました。dynaFormはを生成していませんform。それは「のみ」を生成しtableます。commandButtonしたがって、属性を追加して非ajaxを作成しようとするajax=falseと、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>
于 2013-01-03T11:44:18.560 に答える