私はトランジット ルーティング プロジェクトを作成しており、駅と停留所をピン留めするために Google マップが必要でした。JavaScript で Google マップから座標を取得しました。これらの座標を Java クラスに渡す必要があります。これらの座標でのさまざまなプロセス。netbeans で JSF (Java サーバーの顔) を使用しています。これらの座標を.javaクラスに渡すのを手伝ってくれる人はいますか? 前もって感謝します
9229 次
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
はあなたの名前であり、配列を文字列jsFunction
にcoordinateArray.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が必ずしもその周囲にあるとは限りません。ただし、 のときに呼び出す場合は、そのボタンをフォーム内に配置する必要があります。
コメントで言うように、座標配列の名前が の場合、上記を次のように呼び出します。. 内にコードを追加しません。javascript
funcName()
actionparam
funcName(value)
<h:form>
click
commandButton
path
jsFunction
sendData(path.join())
javascript
jsFunction
通常の関数を呼び出すように、コードjsFunction
からを呼び出すだけです。javascript
javascript
于 2012-12-01T00:15:04.987 に答える
0
- 非表示の入力を使用します
<h:inputHidden value="#{bean.value}"/>
。 - JavaScript を使用して値を更新します。
<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 に答える