[英]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.