簡體   English   中英

將JS變量傳遞給Java類

[英]passing JS variable to a java class

我正在做一個公交路線規划項目,我需要使用Google Maps來確定車站和車站,我用JavaScript從Google Maps中獲取坐標,現在我需要將這些坐標傳遞給Java類,在其中我可以這些坐標上的不同過程。 我在Netbeans上使用JSF -Java服務器Faces-。 誰能幫助我將這些坐標傳遞給.java類? 提前致謝

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

祝你好運。

分享並享受。

  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>

您可以使用<a4j:jsFunction>javascript值傳遞給托管bean。 這是一個例子。

這是你的js數組

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

這是您的頁面。 請注意, sendData是您的jsFunction的名稱, coordinateArray.join()會將數組轉換為String。

   <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 如果是這樣,則意味着jsFunction有一個參數(類似於普通的javascript函數參數)。 您給jsFunction一個名稱,然后像普通的javascript函數(即funcName() )一樣使用給定的名稱進行調用。 如果其中有一個actionparam ,則在調用它時應該傳遞一個參數(即funcName(value) )。
<h:form>不一定必須圍繞它。 但是,如果要在click commandButton時調用它,則該按鈕應該在表單內。
正如您在評論中所說,如果坐標數組的名稱是path則可以像上面那樣調用上面的jsFunction sendData(path.join()) 您無需在jsFunction添加任何javascript代碼。 您只需像調用普通javascript函數一樣,從javascript代碼中調用jsFunction

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM