JavaScript 启动时加载函数并将参数传递给托管 Bean
JavaScript Function Load on Startup and Pass Parameters to Managed Beans
我想在启动时使用 window.onload 加载 JavaScript 函数,该函数会将其参数传递给托管 Bean。
没有命令按钮。
JS:
window.onload = function getVars() {
// ...
var x = locationInfo.lng;
var y = locationInfo.lat;
document.getElementById("formId:x").value = x;
document.getElementById("formId:y").value = y;
}
XHTML:
<h:form id="formId">
<h:inputHidden id="x" value="#{bean.x}" />
<h:inputHidden id="y" value="#{bean.y}" />
</h:form>
Managed Bean 是一个带有 getter 和 setter 的常规托管 bean。
如果不单击命令按钮,此代码将无法运行。
有没有办法用 JavaScript 加载参数并将其传递给 JSF?
您可以使用 remoteCommand 来完成。
<p:remoteCommand name="sendArgs" actionListener="#{mybean.rcvArgs()}" partialSubmit="true" process="@this"/>
并进行 javascript 通话
sendArgs([
{name: 'xval', value: locationInfo.lng},
{name: 'yval', value: locationInfo.lat}
]);
在 mybean 中你必须从参数列表中获取参数
public void rcvArgs() {
Map<String, String> pmap;
pmap = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
String xval = pmap.get("xval");
String yval = pmap.get("yval");
我想在启动时使用 window.onload 加载 JavaScript 函数,该函数会将其参数传递给托管 Bean。
没有命令按钮。
JS:
window.onload = function getVars() {
// ...
var x = locationInfo.lng;
var y = locationInfo.lat;
document.getElementById("formId:x").value = x;
document.getElementById("formId:y").value = y;
}
XHTML:
<h:form id="formId">
<h:inputHidden id="x" value="#{bean.x}" />
<h:inputHidden id="y" value="#{bean.y}" />
</h:form>
Managed Bean 是一个带有 getter 和 setter 的常规托管 bean。
如果不单击命令按钮,此代码将无法运行。
有没有办法用 JavaScript 加载参数并将其传递给 JSF?
您可以使用 remoteCommand 来完成。
<p:remoteCommand name="sendArgs" actionListener="#{mybean.rcvArgs()}" partialSubmit="true" process="@this"/>
并进行 javascript 通话
sendArgs([
{name: 'xval', value: locationInfo.lng},
{name: 'yval', value: locationInfo.lat}
]);
在 mybean 中你必须从参数列表中获取参数
public void rcvArgs() {
Map<String, String> pmap;
pmap = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
String xval = pmap.get("xval");
String yval = pmap.get("yval");