0

私は、primeFaces を使用した JSF サイトを持っています。P:RemoreCommand を使用して、JavaScript から Bean にパラメーターを取得できません。これが私のコードです:

xhtml:

<p:remoteCommand name="scaleLines" actionListener="#{mapBean2.scaleLines}"  update="mapPanel"/>

それからそれを呼び出すために:

map.on('viewreset', function(){  
          scaleLines({newZoom:'10'});


           });

セッション スコープの ManagedBean:

public void scaleLines(){

   String newZoom = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("newZoom");

    if(newZoom == null){
        Logger.getAnonymousLogger().info("Zoom level is null");
    }
    else{
    Integer newZoomInt = Integer.parseInt(newZoom);
    this.mapzoomLevel = newZoomInt;
    for(ZsyMap1Linetest line : allTestLines){
        line.setWeight(((line.getWeight()*newZoomInt)/(6)));
    }
   }
}

これはメソッドを呼び出しますが、デバッガーをアタッチすると、newZoom が常に null であることがわかります。これは、パラメーターが渡されないことを意味します。私は他の投稿を読んだことがありますが、なぜそれが通過しないのかわかりません。また、バッキング Bean に JSF managedBean を使用し、bean という名前の CDI を使用してこれを試しましたが、どちらも同じ結果でした。

4

2 に答える 2

0

問題は、間違った形式を使用していることです。「名前」と「値」を持つ JS オブジェクトの配列を使用する必要があります。いえ[{"name":"param1","value":"value1"},...]

scaleLineあなたの場合、 toのパラメータを変更する[{"name":"newZoom","value":"10"}]とうまくいくはずです。さらに、JS オブジェクトのキーを で囲む必要があり""ます。そうしないと、有効な JSON になりません。

于 2013-07-16T10:01:07.397 に答える
-1

このような[]パラメータを角括弧で囲んでいただけますか? また、が 内にあることを確認してください。長い間プライムフェイスを使用しておらず、最後に使用してから多くの変更が加えられたため、うまくいかない場合は、従来の方法を使用して js と backbean を通信できます。つまり、1 つのテキスト フィールドと 1 つのボタンの非表示フォームを作成し、jquery/js を使用して値をテキスト フィールドの値に入力します。このテキスト フィールドは、その値をBean の変数にバインドする必要があります。次に、jquery/js を使用して、メソッドをトリガーするコマンド ボタンをクリックします。テキスト フィールドを Bean の変数にバインドする必要がない場合でも、requestParameterMap から値を取得できます。scaleLines()scaleLines([{newZoom:'10'}])remoteCommandh:form10newZoomscaleLines10

于 2013-07-16T04:30:19.253 に答える