我正在尝试从传单地图(javascript)获取坐标并将它们传递给我的托管bean。为了将javascript变量发送到我的托管bean,我使用了答案here
这是我正在使用的代码 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
我没有得到错误,但是latt和longt的值总是为0。 ps:latt和longt是标记的坐标(小叶标记) 编辑:正如Holger在评论中所说,表单未提交,因此修改remoteCommand解决了我的问题。以下是修改:
<p:remoteCommand name="myRemote" process="@form" actionListener="#{mapbean.displayLatLong()}" />
答案 0 :(得分:0)
你不需要表格和所有这些东西。
<p:remoteCommand name="myRemote" partialSubmit="true" process="@this" action="#{mapbean.displayLatLong()}"/>
function onClick() {
myRemote([
{ name: 'latt', value: e.latlng.lat },
{ name: 'longt', value: e.latlng.lng }
]);
};
并在服务器端
Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
String latt = params.get("latt");
String longt = params.get("longt");