我想从传单地图(javascript)获取坐标并将它们传递给我的托管bean。为了JavaScript变量发送到我的托管bean,我用了答案here将java变量传递给java bean
这里是我使用 代码中的JSF:
<h:form id="formId">
<h:inputHidden id="x" value="#{mapbean.latt}" />
<h:inputHidden id="y" value="#{mapbean.longt}" />
<p:remoteCommand name="myRemote" action="#{mapbean.displayLatLong()}" immediate="true" />
</h:form>
<script type="text/javascript">
function onClick(e) {
var ff = e.latlng.lat;
ff2= e.latlng.lng;
document.getElementById("formId:x").value = ff;
document.getElementById("formId:y").value = ff2;
myRemote();
}
</script>
豆子:
//....
public int latt;
public int longt;
public void displayLatLong(){
System.out.println("x: " + latt);
System.out.println("y: " + longt);
}
//getters and setters
我我没有得到错误,但格子和longt的值始终是0. ps:格子和longt是标记的坐标(单张标记) 编辑:正如Holger在他的评论中所说的,表单没有提交,所以修改remoteCommand解决了我的问题。这里是修改:
<p:remoteCommand name="myRemote" process="@form" actionListener="#{mapbean.displayLatLong()}" />
人士来电'的onClick()'? – Holger
它是标记上的点击监听器。我通过以下命令在我的bean中定义它: 'RequestContext.getCurrentInstance()。execute(“layer.on('click',onClick)”);' onClick正在工作,我通过显示一条警告来测试它(在onClick中添加了这一行代码:'alert(“lat/long:”+ x +“,”+ y);' – DarkSide
如果调用你应该看看你的浏览器控制台生成一个POST请求,我不这么认为,因为你调用了remoteCommand而没有人提交表单 – Holger