2012-11-30 209 views
1

我正在製作一箇中轉路由項目,我需要谷歌地圖來定位站點和站點,,,我從JavaScript中獲取Google地圖的座標,現在我需要通過這些座標到一個java類,我可以在這些座標上進行不同的處理。我在NetBeans上使用JSF -Java服務器端面。任何人都可以幫助我將這些座標傳遞給.java類嗎? 在此先感謝將JS變量傳遞給java類

回答

1

有很多框架可以幫助你做到這一點。例如,Primefaces在其新的JSF實現(http://www.primefaces.org/showcase-labs/ui/gmapHome.jsf)中內置了一個Google地圖插件。手工操作也很容易。只需設置一個Servlet來處理GET請求並使用任何希望將數據發送到Servlet的Ajax方法。我首先尋找一些Servlet和Ajax示例。同樣,根據您使用的JSF的實現情況,可能已經內置了Ajax工具。

祝你好運。

分享和享受。

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> 
0

您可以使用<a4j:jsFunction>傳遞javascript值的託管Bean。這是一個例子。

這是您的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 function.You可以把裏面的 actionParam如上樣本。如果是這樣,這意味着 jsFunction有一個參數(類似於普通的javascript函數參數)。您給 jsFunction一個名稱,並使用該名稱(如正常的 javascript函數(即 funcName()))進行調用。如果內部有 actionparam,則在調用它時應傳遞一個參數(即 funcName(value))。
A <h:form>不應該在它周圍。但是,如果您想在您撥打 click a commandButton時撥打該按鈕,該按鈕應位於表單內。
正如您在評論中所說的,如果您的座標數組的名稱是 path,那麼您可以像這樣調用上述 jsFunctionsendData(path.join())。您不要在 jsFunction內添加任何 javascript代碼。 只需撥打javascript代碼即可撥打jsFunction,因爲您可以調用普通的javascript函數。

+0

我真的很感謝你的回覆 – Shereen

+0

我不知道我應該在哪裏放 ...代碼,我有函數,把點放在var path [] ,,我應該把這個代碼放在這個jsfunction,if是的,應該是什麼jsFunction呢?什麼jsFunction應該包含反正..對不起,但我是一個初學者在web應用程序,我真的需要你的幫助 – Shereen

+0

我給我的答案添加了一個段落。 – prageeth