[英]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工具。
祝你好運。
分享並享受。
<h:inputHidden value="#{bean.value}"/>
。 <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.