1

私はトランジット ルーティング プロジェクトを作成しており、駅と停留所をピン留めするために Google マップが必要でした。JavaScript で Google マップから座標を取得しました。これらの座標を Java クラスに渡す必要があります。これらの座標でのさまざまなプロセス。netbeans で JSF (Java サーバーの顔) を使用しています。これらの座標を.javaクラスに渡すのを手伝ってくれる人はいますか? 前もって感謝します

4

3 に答える 3

1

これに役立つ多くのフレームワークがあります。たとえば、Primefaces には、Google マップ プラグインが新しい JSF 実装 ( http://www.primefaces.org/showcase-labs/ui/gmapHome.jsf ) に組み込まれています。手で行うのもとても簡単です。GET リクエストを処理するサーブレットをセットアップし、サーブレットにデータを送信する任意の Ajax メソッドを使用するだけです。サーブレットと Ajax の例を探すことから始めます。繰り返しになりますが、使用している JSF の実装によっては、Ajax ツールが既に組み込まれている場合があります。

幸運を祈ります。

共有してお楽しみください。

于 2012-11-30T21:24:25.020 に答える
0

を使用してマネージド Bean に値<a4j:jsFunction>を渡すことができます。javascriptこれは一例です。

これはあなたのjs配列です

<script>
  var coordinateArray = [12, 26];
</script>

これはあなたのページです。sendDataはあなたの名前であり、配列を文字列jsFunctioncoordinateArray.join()変換することに注意してください。

   <h:form>
    <a4j:commandButton value="Send" onclick="sendData(coordinateArray.join())"/>
    <a4j:jsFunction name="sendData">
      <a4j:actionparam name="param1" assignTo="#{hBean.coordinatesString}" />
    </a4j:jsFunction>
   </h:form>

あなたのマネージドBeanで

  String coordinatesString;
  String[] coordinatesArray;

  public String getCoordinatesString() {
    return coordinatesString;
  }

  public void setCoordinatesString(String coordinatesString) {
    this.coordinatesString = coordinatesString;
    this.coordinatesArray = coordinatesString.split(",");//This is what you need
  }

編集:


a4j:jsFunction通常のjavascript関数と 考えてくださいactionParam。上記のサンプルのように内部に を入れることができます。その場合、引数が 1 つあることを意味しjsFunctionます (通常の JavaScript 関数の引数と同様)。名前を付けて、通常の関数 (つまり)jsFunctionのようにその名前を使用して呼び出します。内部にがある場合は、呼び出すときにパラメータを渡す必要があります(つまり)。 Aが必ずしもその周囲にあるとは限りません。ただし、 のときに呼び出す場合は、そのボタンをフォーム内に配置する必要があります。 コメントで言うように、座標配列の名前が の場合、上記を次のように呼び出します。. 内にコードを追加しません。javascriptfuncName()actionparamfuncName(value)
<h:form>clickcommandButton
pathjsFunctionsendData(path.join())javascriptjsFunction通常の関数を呼び出すように、コードjsFunctionからを呼び出すだけです。javascriptjavascript

于 2012-12-01T00:15:04.987 に答える
0
  1. 非表示の入力を使用します<h:inputHidden value="#{bean.value}"/>
  2. JavaScript を使用して値を更新します。
  3. <h:inputHidden value="#{bean.value}"/>その Bean 値を更新するプロセス。

これが実際の例です:

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

@ManagedBean
@ViewScoped
public class Bean {

    private String value;

    @PostConstruct
    public void postConstruct() {
        value = "SERVER SIDE VALUE";
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

}
<h:head>
    <script>
        function updateElementValue(id,value){
            document.getElementById(id).value = value;
        }
    </script>
</h:head>

<h:body>

    <h:form id="form" prependId="false">

        <p:commandButton value="UPDATE CLIENT SIDE VALUE OF INPUT-HIDDEN"
                         onclick="updateElementValue('nameInputHiddenId',
                                                     'CLIENT SIDE VALUE');
                                                      return false;"/>
        <p:commandButton value="UPDATE SERVER SIDE VALUE OF INPUT-HIDDEN" 
                         process="@form" 
                         update="dialogId" 
                         oncomplete="dialogWidgetVar.show();" />

        <h:inputHidden id="nameInputHiddenId" value="#{bean.value}" />

        <p:dialog id="dialogId" widgetVar="dialogWidgetVar">
            <h:outputText id="nameOutputTextId" value="#{bean.value}" />
            <p:commandButton value="Yes" onclick="dialogWidgetVar.hide();" />
            <p:commandButton value="No" onclick="dialogWidgetVar.hide();"/>
        </p:dialog>

    </h:form>

</h:body>
于 2012-11-30T22:55:29.617 に答える