0

それが問題なのかどうかはわかりませんが、そう思います。私は2つの送信ボタンがある場所から持っています。最初の 1 つはシリアル番号から製品情報を取得し、2 つはフォーム全体を再度送信します。

検索ボタンとコード:

ボタン 1

<p:column><h:outputLabel value="#{bundle.newRma_label_sarjanumero}" for="sarjanro" /></p:column>
                <p:column><p:inputText id="sarjanro" value="#{MainController.selected.sarjanro}" style="width: 200px;" /></p:column>
                <p:column><p:commandButton icon="ui-icon-search"
                                           action="#{MainController.haeTiedotSarjanrolla}" style="width: 100px;" update=":messagePanel"/></p:column>

 //Fetching product info with serial number
public String haeTiedotSarjanrolla() {
    log.info("sarjanro=" + current.getSarjanro());
    Sarjanumerot s = null;

    s = helper.getSerialInfo(current.getSarjanro());
    if (s != null) {
        current.setAn8(s.getAn8());
        current.setDsc1(s.getDsc1());
        current.setDsc2(s.getDsc2());
        current.setSarjanro(s.getId().getLotn());
        current.setTuotenro(s.getId().getLitm());
    }

    // Back to same page!
    return "newRma";
}

別のボタン (保存)

<p:column><p:commandButton action="#{MainController.talletaUusiRma}" value="#{bundle.newRma_tallenna}" immediate="true" style="width: 220px;"/></p:column>

保存 (ボタン 2) は機能していますが、リクエストは空で、データはありません。私はそれをそのようにチェックしようとしましたが、常にNULLです:

最初の送信後に入力されない別のフィールド:

<p:row>
            <p:column></p:column>
            <p:column><p:outputLabel value="#{bundle.newRma_shortdesc}" for="shortdesc"/></p:column>
            <p:column><p:inputTextarea rows="4" cols="30" id="shortdesc" value="#{MainController.selected.shortdesc}" style="width: 200px;"/></p:column>

        </p:row>

Map<String, String> parameterMap = (Map<String, String>) FacesContext.getCurrentInstance()
                     .getExternalContext().getRequestParameterMap();
    String temp = parameterMap.get("shortdesc");

temp は常に NULL です!!

これをprimefaces、ajax、jsなどで処理するベストプラクティスはありますか?

ありがとう!サーミ語

4

1 に答える 1

2

これは、Bean がそうであり、アクション メソッドから@ViewScoped戻るnullか、またはから戻った場合にのみ機能します。void

次のように、nullまたは以外を返す場合void

// Back to same page!
return "newRma";

次に、まったく新しいビュースコープの Bean インスタンスが作成され、最初のインスタンスが破棄されます。

さらに、immediate="true"2番目のボタンで使用した理由がわかりません。これは意味がありませんが、この方法では非immediate入力のデータはまったく処理されないため、のデータでそれを行う必要があることを認識していますか?以前の未immediate提出?

ところで、提出されたデータをどのように収集したかについても意味がありません。リクエスト パラメータ マップをトラバースする必要はありません (ちなみに、無効なパラメータ名を使用しました)。入力値にバインドされている Bean プロパティに直接アクセスするだけです。

于 2012-11-08T13:26:13.337 に答える